我正在使用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 用户帐户。可能的原因和解决方案是什么?