对客户端API的更新已将HTTPBasicAuthication方法替换为OAuth2 Bearer
授权标头。OAuth 2承载者授权标头
随着旧的API我会做到以下几点:
NSURLCredential *credential = [NSURLCredential credentialWithUser:self.account.username
password:self.account.token
persistence:NSURLCredentialPersistenceForSession];
NSURLProtectionSpace *space = [[NSURLProtectionSpace alloc] initWithHost:kAPIHost
port:443
protocol:NSURLProtectionSpaceHTTPS
realm:@"my-api"
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
但是,这不会与Bearer
头工作。
NSString *authorization = [NSString stringWithFormat:@"Bearer %@",self.account.token];
[urlRequest setValue:authorization forHTTPHeaderField:@"Authorization"];
但有了这个解决方案的问题是,API重定向大多数的调用其他网址,这必须做:
现在通常我只会把它加像这样添加标题我自己与安全。 NSURLRequest
获得重定向后,授权标头将从请求中删除,并且由于我无法将承载方法添加到NSURLCredentialStorage
,因此它在重定向后无法再进行身份验证。
什么是一个很好的解决方案?我只能想到赶上重定向并修改NSURLRequest
,所以它包括Bearer
标题。但是如何?
你是一个传奇人物。我遇到了同样的问题,并处理重定向修复它。 – rawbeans