Facebook Graph API停止发送用户电子邮件

时间:2013-10-11 06:59:02

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

出于某种原因,Facebook在成功验证用户身份后,在用户JSON中停止返回用户电子邮件。

我甚至将FacebookSDK for iOS从v3.6升级到v3.8而没有任何运气。直到几周前一切正常,但现在还没有。它只是电子邮件,所有其他属性,即DOB回来就好了。 Facebook不断改变他们的权限系统,但我不知道最近可能导致这种情况的变化。任何指针都将非常感激。

是的,我正在尝试使用我自己的FB帐户进行身份验证,该帐户包含与之关联的有效电子邮件,我最近也没有更改任何隐私设置。

还尝试从我的Facebook隐私设置中删除该应用并重新授权,但仍然没有运气。这是代码:

[FBSession openActiveSessionWithReadPermissions:@[@"user_about_me", @"user_location", @"user_birthday", @"email"] allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
    switch (status) {
        case FBSessionStateOpen: {
            [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
                NSLog(@"User Data: %@", user);      //no email in the json
                NSString *email = user[@"email"];   //obviously returns nil
                //rest of the code
            }];
        }
            break;
        case FBSessionStateClosed:
        case FBSessionStateClosedLoginFailed:
            [FBSession.activeSession closeAndClearTokenInformation];
            break;
        default:
            break;
    }
}];

Facebook App权限页面的屏幕截图,清楚地显示我已正确配置它:

enter image description here

以下是我在API回调中返回的用户JSON(我删除了我的个人信息)。

{
    bio = "My Bio";
    birthday = "01/01/1900";
    "first_name" = FN;
    gender = male;
    id = 00000000;
    "last_name" = LN;
    link = "https://www.facebook.com/FBName";
    locale = "en";
    location =     {
        id = 11111111111111111;
        name = "City Name";
    };
    name = "FN LN";
    quotes = "";
    timezone = "0";
    "updated_time" = "2000-00-07T00:00:21+0000";
    username = USERNAME;
    verified = 1;
}

1 个答案:

答案 0 :(得分:5)

事实证明,如果您停用,禁用或删除与该Facebook帐户相关联的主电子邮件,则在您拨打图表时,Facebook不会返回用户电子邮件。

如果您长时间不访问您的电子邮件地址,可能会发生这种情况。 Facebook可能会在他们发往您主要地址的电子邮件开始反弹时将其弄清楚。

让它再次运作的步骤:

  1. 请确保您能够登录到您的电子邮件帐户并且 Facebook电子邮件不会被反弹。

  2. 登录Facebook并将您的主电子邮件地址更改为某些 其他电子邮件。

  3. Facebook会向您的新电子邮件地址发送验证邮件, 打开此电子邮件,然后点击验证链接。

  4. 重新登录Facebook并再次将主电子邮件更改为 以前的电子邮件地址。

  5. Facebook会向此电子邮件地址发送验证邮件, 请打开它并单击它以验证您的电子邮件。

  6. 等待几个小时再试一次中提琴,你的电子邮件就会发送 开始进入json。