我正在使用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用户帐户。可能是什么原因和解决方案?
Facebook提供沙盒测试用户,可用于测试目的。
在这里,您可以检查所有关于Facebook测试用户。
只有当用户是朋友的朋友或朋友时,facebook才允许查看个人资料。