2016-05-20 55 views
0

我正在使用Google Drive iOS SDK。我可以成功登录一个用户,存储一个钥匙链项目,这样他就不必每次登录他的云端硬盘。我建立的应用程序是多用户的,所以我需要一种方式来注销用户,完全删除该用户存储的钥匙串,并处理新用户的身份验证。注销用户的正确步骤

我读过四周,我发现这一点:

- (IBAction)logoutButton:(id)sender { 
    [GTMOAuth2ViewControllerTouch removeAuthFromKeychainForName:kKeychainItemName]; 
} 

的问题是,试图授权看来,以前的功能并没有完全新用户时解除授权用户因为这个功能不存在的登录视图控制器:

- (IBAction)loginButton:(id)sender { 
if (!self.service.authorizer.canAuthorize) { 
    // Not yet authorized, request authorization by pushing the login UI onto the UI stack. 
    [self presentViewController:[self createAuthController] animated:YES completion:nil]; 
} 

}

难道我失去了一些东西,以正确删除用户的认证/授权从我的应用程序?或者我应该以不同的方式处理它?

在此先感谢。

回答

1

在我的应用程序中,如果保留GTLServiceDrive的授权者值,则需要设置authorizer = nil;

按照我的logout方法的代码,

[GTMOAuth2ViewControllerTouch removeAuthFromKeychainForName:keychainItemName]; 
     [GTLServiceDrive sharedServiceDrive].authorizer = nil; 
0

实际上,您可以尝试使用GPPSignIn对象的signOut方法来注销用户。它从钥匙串中删除OAuth 2.0令牌。 例子:

- (void)signOut { 
    [[GPPSignIn sharedInstance] signOut]; 
} 

然后如文档中讨论的那样,你必须提供谁与谷歌签署了从您的应用程序断开连接的能力的用户。如果用户删除其帐户,则必须删除您的应用从Google API获取的信息。

示例代码以编程方式撤销代表用户授予您的应用程序的访问令牌,并断开用户的帐户与应用程序的连接。

- (void)disconnect { 
    [[GPPSignIn sharedInstance] disconnect]; 
} 

- (void)didDisconnectWithError:(NSError *)error { 
    if (error) { 
    NSLog(@"Received error %@", error); 
    } else { 
    // The user is signed out and disconnected. 
    // Clean up user data as specified by the Google+ terms. 
    } 
} 

希望有帮助!

+0

感谢您的信息,我跟着你提供的链接,发现它已经过时了。 –