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

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

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

我什至将适用于 iOS 的 FacebookSDK 从 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;
}

最佳答案

事实证明,如果与该 Facebook 帐户关联的主要电子邮件已被停用、禁用或删除,则当您进行图表调用时,Facebook 不会返回用户电子邮件。

如果您长时间不访问您的电子邮件地址,就会发生这种情况。当他们发送到您的主要地址的电子邮件开始退回时,Facebook 可能会发现这一点。

让它重新工作的步骤:

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

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

  3. Facebook 将向您的新电子邮件地址发送一封验证邮件, 打开此电子邮件并单击验证链接。

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

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

  6. 等待几个小时,然后重试 viola,您的电子邮件将 开始在 json 中下降。

关于ios - Facebook Graph API 停止发送用户电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19312052/

相关文章:

objective-c - iOS 存储和缓存存储限制

iphone - 使用 UIActivityViewController 感到困惑

javascript - 如何将网站重定向到 Facebook Canvas URL,而不进入无限循环?

php - 将 Facebook 的好友列表数组与 MySQL 表进行比较

iphone - 如何在 iOS7 中将 UIDatePicker 添加到 UIALertView

java - 应用程序中的 webview 是否缓存页面?

ios - 如何确保只有一个线程正在执行后台上下文 block

javascript - 为 Facebook 按钮启用 Onclick 方法

ios - Swift - UICollisionBehavior 委托(delegate)方法未被调用

ios - 如何使用适用于 iOS 的 Google Maps SDK 检测点在多边形内?