注销用户的正确程序

时间:2016-05-20 17:10:12

标签: ios objective-c google-drive-api

我正在使用Google Drive iOS SDK。我可以成功登录用户,存储钥匙串项目,这样他每次想要访问他的驱动器时都不必登录。我正在构建的应用程序是多用户的,因此我需要一种方法来注销用户,完全删除该用户存储的钥匙串,并处理新用户的身份验证。

我已经读完了,我发现了这个:

string inputStr = "1995-05-10T00:00:00-00:00";
DateTime dt;
DateTime.TryParse(inputStr,CultureInfo.InvariantCulture,DateTimeStyles.AdjustToUniversal, out dt);

问题在于,当尝试授权新用户时,似乎前一个功能没有完全取消授权用户,因为此功能不会显示登录视图控制器:

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

}

我是否遗漏了一些内容,无法从我的应用中正确删除用户的身份验证/授权?或者我应该以不同的方式处理它?<​​/ p>

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

我的注销方法中的代码

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

答案 1 :(得分:0)

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

- (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.
  }
}

然后,如文档中所述,您必须为使用Google登录的用户提供与您的应用断开连接的权限。如果用户删除了自己的帐户,则必须删除应用从Google API中获取的信息。

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

Add display:table; to parent div and display:table-cell; to child div. 

希望有所帮助!