iOS Facebook SDK:FBSDKGraphRequest尽管获得了许可,却未收到电子邮件

时间:2015-07-26 20:29:14

标签: ios objective-c facebook facebook-graph-api

我正在使用FB SDK v4.4(最新版)并认为我已经避免了其他问题中的问题。

我正在建立一个登录:

       FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
       [login logInWithReadPermissions:@[@"email"] 
           handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
           if (error) {
              // Process error
           } else {
              [self facebookGetUserProfileWithCompletion:completion];
           }
       }];

我特意要求"电子邮件" (需要应用审核的扩展权限。)

我的应用已通过审核,用户在出现提示时会授予电子邮件权限。在处理程序中添加[result.grantedPermissions containsObject:@"email"]检查将返回TRUE。

用户回复了用户界面后,代码就会从图谱API中获取用户个人资料:

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields" : @"id,email,first_name,last_name,link,locale"}]  
              startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {

if (!error) {
     NSString *email = [result objectForKey:@"email"] ;
     NSString *first_name = [result objectForKey:@"first_name"] ;
     //etc...
}

此时,我只有五个参数;我错过了电子邮件。使用Graph API Explorer,我得到了完整的六个。用户确实有一个在FB注册的电子邮件地址。

为什么没有电子邮件??? !!!

2 个答案:

答案 0 :(得分:3)

我几乎解决了我的问题。他们在这里:

1)@cbroe最有用的建议是获取令牌并使用Graph API Explorer进行调试。那里有很多帮助。

2)FB在大多数情况下将他们的DOB字段转移到age_range。我的现有应用程序似乎仍将返回DOB,但新版本不会未经许可。我找不到这方面的文件,但如果我选择age_range,我就会很好。

3)我的FB测试帐户中的电子邮件地址出现了一个奇怪的问题。这已经修好了,我再次收到电子邮件没问题。同样,Graph API测试最有助于解决此问题。再次感谢@cbroe!

答案 1 :(得分:0)

您的参数应该只是一个字符串

@"fields:id,email,first_name,last_name,link,locale"