我正在使用Facebook
创建新用户或登录 Parse 。
4。用户删除了应用程序的权限(从Facebook删除应用程序)
我想知道我们检查用户是否更改了Facebook中应用程序的授权状态的方式是什么。
我该如何检查?我们怎么知道它不再连接?
FBSDKAccessToken.currentAccessToken();
不能完成这项工作,因为它只能检查设备中是否存在令牌。
I.E。:用户进入Facebook应用程序设置并从列表中删除应用程序。
p.s。:请帮助推荐这个问题,因为很难找到解决方案。谢谢!!
谢谢
答案 0 :(得分:3)
处理无效会话
在我们之前,我们无法知道缓存的Facebook会话是否有效 尝试向API发出请求。会话可能会失效 如果用户更改其密码或撤消应用程序的密码 特权。发生这种情况时,用户需要注销。我们可以 识别FBSDKGraphRequest中的无效会话错误 完成处理程序并自动将用户注销。
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
// handle successful response
} else if ([[error userInfo][@"error"][@"type"] isEqualToString: @"OAuthException"]) { // Since the request failed, we can check if it was due to an invalid session
NSLog(@"The facebook session was invalidated");
[PFFacebookUtils unlinkUserInBackground:[PFUser currentUser]];
} else {
NSLog(@"Some other error: %@", error);
}
}];
答案 1 :(得分:0)
我认为你可以在这里找到你想要的答案:
https://developers.facebook.com/docs/facebook-login/ios/permissions
你可以:
1)自己检查错误:
let token = FBSDKAccessToken.currentAccessToken()
if token.hasGranted("publish_actions") //Or whatever other permission you're checking
2)无论如何都要执行一些操作并检查错误:
if error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] == 200
{
//Handle missing permissions here
}
我猜测currentAccessToken
将是他们上次登录时的缓存信息,因此第二个选项可能就是这样。
答案 2 :(得分:0)
您可以为您的应用配置取消授权回拨网址。因此,您需要创建一个后端服务,一旦用户取消对您应用的授权,该服务就可以处理来自Facebook的传入HTTP POST请求。
见
了解详情。