我无法使用[self isAuthorized]
来确认我之前获得的访问令牌。
我每次使用Google Drive SDK for iOS登录时都会:
// Creates the auth controller for authorizing access to Google Drive.
-(GTMOAuth2ViewControllerTouch *)createAuthController {
GTMOAuth2ViewControllerTouch *authController;
authController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:scopes
clientID:kClientID
clientSecret:kClientSecret
keychainItemName:kKeychainItemName
delegate:self
finishedSelector:@selector(viewController:finishedWithAuth:error:)];
return authController;
}
验证完成后,没有错误,因此应正确保存访问令牌
// Handle completion of the authorization process, and updates the Drive service
// with the new credentials.
-(void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)authResult error:(NSError *)error {
if (error != nil)
{
//[self showAlert:@"Authentication Error" message:error.localizedDescription];
self.driveService.authorizer = nil;
}
else
{
self.driveService.authorizer = authResult;
}
}
我使用了一个NSLog来确保我收到了访问令牌而它确实收到了。
-(BOOL)isAuthorized {
NSString *oauthToken = [((GTMOAuth2Authentication *)self.driveService.authorizer) accessToken];
NSLog(@"oauthToken: %@", oauthToken);
return [((GTMOAuth2Authentication *)self.driveService.authorizer) canAuthorize];
}
但是当我看到我是否被授权时,没有保存令牌(oauthToken为NULL),我需要再次登录。
N.B:它在iOS 9之前一直在运作。我不知道它是否相关。
由于 文森特
答案 0 :(得分:1)
您可能需要尝试this之类的内容来验证登录信息:
// Check for authorization.
GTMOAuth2Authentication *auth =
[GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName
clientID:kClientId
clientSecret:kClientSecret];
if ([auth canAuthorize]) {
[self isAuthorizedWithAuthentication:auth];
}
另一方面,如果您确实需要访问令牌,请查看此SO post,但是,存储访问令牌不是最佳做法,因为访问令牌具有到期时间。祝你好运希望这可以帮助。