【问题标题】:How to fetch complete user details from Facebook API如何从 Facebook API 获取完整的用户详细信息
【发布时间】:2018-07-25 12:06:52
【问题描述】:

如何从 Facebook API 获取完整的用户详细信息

    - (void)viewDidLoad {
        [super viewDidLoad];

        // Uncomment to automatically sign in the user.
        _signInFacebook.delegate = self;
        _signInFacebook.readPermissions =  @[@"email",@"birthday"];

    }

- (void)  loginButton:(FBSDKLoginButton *)loginButton
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
                error:(NSError *)error{
    NSLog(@"LOGGED IN TO FACEBOOK");
    [self fetchUserInfo];
}


-(void)fetchUserInfo {

    FBSDKAccessToken* token = [FBSDKAccessToken currentAccessToken];
    [[[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"/%@",token.userID] parameters:@{ @"fields":@"id,name,first_name,middle_name,last_name,email,gender,location,picture.type(large),age_range,verified,birthday"}  HTTPMethod:@"GET"]
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
         if (!error) {
             NSLog(@"fetched user:%@", result);

             if ([result isKindOfClass:[NSDictionary class]])
             {
                 NSLog(@"%@",result);
                 [USERDEFAULTS setObject:result forKey:PROFILE_KEY];
             }

         }
         else
         {
             NSLog(@"Error fetchUserInfo %@",error);
         }
     }];

}

期望从 facebook API 获取手机号码

【问题讨论】:

  • 一些 Facebook 属性是私有的,因此您需要获得访问这些属性的权限。生日就是其中之一。
  • 所以我需要通过参数来获得访问用户详细信息的权限。

标签: ios objective-c iphone facebook


【解决方案1】:

您应该使用“图片”而不是“照片”来获取用户个人资料照片。 您可以从 accessToken 中获取用户 ID,例如:

FBSDKAccessToken* token = [FBSDKAccessToken currentAccessToken];
NSString *ID = token.userID

登录时:
要获得生日,您需要“user_birthday”权限
要获取位置,您需要权限“user_location”

在您的应用中实施之前,您可以在 Facebook Graph API Explorer 中测试所有内容。

登录时请求权限,示例代码:

FBSDKLoginManager* login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"public_profile",@"email",@"user_birthday"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    //your code to handle login result
}];

【讨论】:

  • 电子邮件、性别、身份证、姓名和图片有效!生日和地点不是
  • 通过Token值后无法获取生日和手机号码。
  • @kiran 当您登录您的应用程序时,您需要请求权限。您是否尝试过使用 Facebook Graph API Explorer?你能从中得到你想要的数据吗?
  • 我使用这个引用的 url:developers.facebook.com/docs/graph-api/reference/user/… 来设置应用程序的权限。
  • @kiran 在您的应用中登录(请求用户令牌)时,您需要指定所需的权限。
猜你喜欢
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 2013-05-20
  • 1970-01-01
相关资源
最近更新 更多