首页 > 解决方案 > 在 iOS 应用程序中使用 FBSDKLoginManager 拒绝某些 Facebook 用户的 Facebook 个人资料链接

问题描述

我正在使用FBSDKLoginKit登录Facebook。我正在尝试获取电子邮件姓名公开资料用户资料链接。根据获取个人资料链接的最新政策,开发者在登录时需要征求许可,并应向 Facebook 提供如何使用该信息以供审核。我做了所有这些过程。

使用FBSDKLoginManager使用我的开发人员 Facebook 帐户登录时,我能够获取所有这些必需的参数。但是当我尝试使用另一个用户帐户登录时,配置文件链接被拒绝响应。链接是空的。

我创建了如下方法来登录并获取这些参数。

- (void)loginFaceBook
{
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    login.loginBehavior = FBSDKLoginBehaviorSystemAccount;
    // need permission

    [login logInWithReadPermissions:@[@"public_profile", @"email", @"user_link"]
                 fromViewController:self
                            handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
     {

         if (error)
         {
             NSLog(@"Process error"); 
         }
         else if (result.isCancelled)
         {
             NSLog(@"Cancelled");
         }
         else
         {
             NSLog(@"Logged in");

             if ([result.grantedPermissions containsObject:@"email"])
             {
                 NSDictionary *params = @{@"fields" : @"id,name,link,email"};

                 [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:params]
                  startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id responseData, NSError *error)
                  {
                       NSLog(@"%@",responseData);
                      if (!error)
                      {
                          NSString *fbEmail = [AQCommon validateTextBeforePack:[responseData objectForKey:kEmail]];
                          NSString *fblink = [AQCommon validateTextBeforePack:[responseData objectForKey:@"link"]];
                          NSString *fbname = [AQCommon validateTextBeforePack:[responseData objectForKey:@"name"]];


                      }
                      else
                      {
                          NSLog(@"Facebook login failed. Please try later.");                  }
                      }
                  }];
             }
             else
             {
                 NSLog(@"Facebook login failed. Please try later.");                  }

         }

     }];
}

我使用我的 Facebook 开发人员帐户(我在其中创建了我的应用程序)获得了所有必需的参数登录,但其他一些帐户的user_link拒绝。可能是什么问题呢?是否与 Facebook 隐私政策有关?或者,用户需要更改其个人资料中的某些设置?

除了上述问题之外,我从开发者帐户中获得的个人资料链接是从除某些帐户之外的任何 Facebook 帐户打开的。该错误表明链接已过期或未授予权限。该问题非常特定于 Facebook 用户帐户。可能的原因和解决方案是什么?

标签: iosobjective-cfacebookfacebook-graph-apifbsdkloginkit

解决方案


Facebook 提供沙盒测试用户,可用于测试目的。

在这里您可以查看所有关于 Facebook 测试用户的信息。

https://developers.facebook.com/docs/apps/test-users


推荐阅读