从 Facebook 注销 parse.com 用户失败
Failed logout parse.com user from Facebook
我在游戏中使用
登录Facebook
PFFacebookUtils logInInBackgroundWithReadPermissions:@[@"email"]
block:^(PFUser *user, NSError *error)
但是当我尝试注销,然后使用其他用户登录时,我看到 Facebook 屏幕显示:“您已经授权 [应用程序名称]»。
即使我重新安装应用程序,此消息也不会消失。
我尝试用不同的方式注销这些结果:
没有结果,出现«您已经授权»。
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
if ( [FBSDKAccessToken currentAccessToken] ){
[login logOut];
NSLog(@"The user is no longer associated with their Facebook account.");
}
无法运行申请,因为Facebook SDK v.4中没有会话
[PFFacebookUtils.session closeAndClearTokenInformation];
[PFUser logOut];
没有结果,出现«您已经授权»。
[PFFacebookUtils unlinkUserInBackground:[PFUser currentUser]
block:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"The user is no longer associated with their Facebook account.");
}
else{
NSLog(@"Failure logout FB: %@", error);
}
}];
[PFUser logOut];
我还在日志中收到错误消息:
[Error]: username xxxx already taken (Code: 202, Version: 1.9.1).
我看到了这个 。它说,问题已在 Facebook SDK 版本 >= 4.4 中解决。但我使用 Parse SDK v.1.9.1 和 Facebook SDK v.4.7,并得到同样的失败。
我能做错什么吗?
更新:
谢谢jbehrens94's回复,这个版本是对的:
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions"
parameters:nil
HTTPMethod:@"DELETE"]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error)
NSLog(@"Revoking is successfull");
else
NSLog(@"Failure revoking: %@", error);
}];
很有魅力!
这是因为 Facebook 通过 OAuth 对用户进行身份验证的方式。当有人使用 Facebook 登录您的应用程序时,该应用程序会向 Facebook 发出请求以获取对 Facebook 数据的访问权限。
Facebook 将该应用程序添加到具有特定访问权限的用户个人资料中,因此您能够重新登录 Facebook 并且看不到该屏幕的唯一方法是从您的 Facebook 设置中手动删除该应用程序。
您链接到的 question/post 描述正确,我引用:
Actually there is a difference between Revoking Login (letting people completely de-authorizing an app, or revoking login) and Logging out an user from his/her Facebook account
.
我在游戏中使用
登录FacebookPFFacebookUtils logInInBackgroundWithReadPermissions:@[@"email"]
block:^(PFUser *user, NSError *error)
但是当我尝试注销,然后使用其他用户登录时,我看到 Facebook 屏幕显示:“您已经授权 [应用程序名称]»。
即使我重新安装应用程序,此消息也不会消失。 我尝试用不同的方式注销这些结果:
没有结果,出现«您已经授权»。
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; if ( [FBSDKAccessToken currentAccessToken] ){ [login logOut]; NSLog(@"The user is no longer associated with their Facebook account."); }
无法运行申请,因为Facebook SDK v.4中没有会话
[PFFacebookUtils.session closeAndClearTokenInformation]; [PFUser logOut];
没有结果,出现«您已经授权»。
[PFFacebookUtils unlinkUserInBackground:[PFUser currentUser] block:^(BOOL succeeded, NSError *error) { if (succeeded) { NSLog(@"The user is no longer associated with their Facebook account."); } else{ NSLog(@"Failure logout FB: %@", error); } }]; [PFUser logOut];
我还在日志中收到错误消息:
[Error]: username xxxx already taken (Code: 202, Version: 1.9.1).
我看到了这个
更新: 谢谢jbehrens94's回复,这个版本是对的:
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions"
parameters:nil
HTTPMethod:@"DELETE"]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error)
NSLog(@"Revoking is successfull");
else
NSLog(@"Failure revoking: %@", error);
}];
很有魅力!
这是因为 Facebook 通过 OAuth 对用户进行身份验证的方式。当有人使用 Facebook 登录您的应用程序时,该应用程序会向 Facebook 发出请求以获取对 Facebook 数据的访问权限。 Facebook 将该应用程序添加到具有特定访问权限的用户个人资料中,因此您能够重新登录 Facebook 并且看不到该屏幕的唯一方法是从您的 Facebook 设置中手动删除该应用程序。
您链接到的 question/post 描述正确,我引用:
Actually there is a difference between Revoking Login (letting people completely de-authorizing an app, or revoking login) and Logging out an user from his/her Facebook account
.