无法获取 Facebook 用户信息(生日、工作、教育)

Posted

技术标签:

【中文标题】无法获取 Facebook 用户信息(生日、工作、教育)【英文标题】:Unable to get Facebook user info (birthday, work, education) 【发布时间】:2017-01-27 02:32:52 【问题描述】:

我很难通过 Facebook SDK 获取用户信息。

我正在努力争取生日、工作和教育。

我正在使用这个:

 let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphpath: "me", parameters: ["fields":"education, work, email, id, name, first_name, last_name, birthday, gender"])

该电话不提供教育、工作或生日。

我拥有 Facebook 批准的以下权限:

user_birthday user_education_history user_work_history

当我尝试在上面的代码示例中使用这些值时,应用程序会因不存在的字段而崩溃:

type (User), com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode=100, com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey=
    body =     
        error =         
            code = 100;
            "fbtrace_id" = CVy14JLKraa;
            message = "(#100) Tried accessing nonexisting field (user_birthday) on node type (User)";
            type = OAuthException;
        ;
    ;
    code = 400;

当我尝试使用带有用户 ID 的图形请求而不是我时:

let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "/\(fbid)", parameters: ["fields":"user_birthday"])
                    graphRequest.startWithCompletionHandler( (connection, result, error) -> Void in ...

我也遇到同样的错误:

 message = "(#100) Tried accessing nonexisting field (user_birthday) on node type (User)";

有什么建议吗?

【问题讨论】:

没有名为 user_birthday 的字段。 ***.com/a/40082252/6656894 参考这个答案 ***.com/a/40816501/6656894 并参考这个答案 “我拥有 Facebook 批准的以下权限” - 用户是否将这些权限授予您的应用程序……? 【参考方案1】:

请遵照执行。 可能对你有用。

#define K_Field @"fields"
#define K_Permission @"email,location, birthday, name, link"
#define K_ID @"id"
#define K_Name @"name"
#define K_DOB @"birthday"
#define K_Email @"email"



        FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
        [login logOut];
        login.loginBehavior = FBSDKLoginBehaviorWeb;

        [login
         logInWithReadPermissions: @[K_Email]
         fromViewController:self
         handler:^(FBSDKLoginManagerLoginResult *user, NSError *error) 
             if (error || user.isCancelled) 
                 NSLog(@"Process error");
              else 
                 if ([FBSDKAccessToken currentAccessToken]) 
                     [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@K_Field: K_Permission]
                      startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
                          if (!error) 
                              NSLog(@"fetched user:%@", result);
                              //Done login
                          
                      ];
                 
             
         ];

请确保您使用正确的关键字与facebook official docs相同

【讨论】:

【参考方案2】:

可以通过收集用户的 id 并从 Graph API 访问中获取公共详细信息来使用 Facebook Graph API:

$fb->get('/me?fields=name,first_name,last_name,email,birthday');

【讨论】:

以上是关于无法获取 Facebook 用户信息(生日、工作、教育)的主要内容,如果未能解决你的问题,请参考以下文章

无法获得FB用户生日,android?

Phonegap Facebook Connect - 获取用户的生日和姓名

我如何在 iOS sdk 的 facebook 上获取好友生日和用户生日

Facebook iOS 6 - 获取用户信息

使用 fb.api 的 Facebook 用户位置

在 Facebook iOS 7 中获取所有朋友的生日