检查用户是否修改了应用程序的Facebook权限

时间:2015-07-12 16:18:59

标签: ios facebook swift facebook-graph-api parse-platform

我正在使用Facebook创建新用户或登录 Parse

  1. 用户使用Facebook登录
  2. 登录应用
  3. 用户提示接受权限。
  4. 用户接受应用请求的所有权限。
  5. 4。用户删除了应用程序的权限(从Facebook删除应用程序)

    我想知道我们检查用户是否更改了Facebook中应用程序的授权状态的方式是什么。

    我该如何检查?我们怎么知道它不再连接?

    FBSDKAccessToken.currentAccessToken();不能完成这项工作,因为它只能检查设备中是否存在令牌。

    I.E。:用户进入Facebook应用程序设置并从列表中删除应用程序。

    p.s。:请帮助推荐这个问题,因为很难找到解决方案。谢谢!!

    谢谢

3 个答案:

答案 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);
        }
    }];

来源:Integrate Login with Facebook

答案 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请求。

了解详情。