2013-10-11 51 views
4

由于某种原因,Facebook停止以用户JSON的身份验证用户后返回用户电子邮件。Facebook Graph API停止发送用户电子邮件

我甚至从V3.6到V3.8升级FacebookSDK为iOS没有任何运气。直到几个星期前,它一切正常,但现在不再了。它只是电子邮件,所有其他属性,即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应用程序的权限页面的屏幕截图,清楚地表明,我已经正确配置它:

enter image description here

这里是用户JSON我回来的API回调(我已经删除了我的个人信息)。

{ 
    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; 
} 
+0

将服务器端的范围添加为电子邮件。请参阅https://developers.facebook.com/docs/reference/javascript/FB.login/ – Lavixu

+0

谢谢。我正在使用Objective-C SDK,调用是权限,它们在我的代码的第一行正确设置。 –

回答

5

原来,Facebook并没有返回用户的电子邮件,当你犯了一个图形调用如果与Facebook账户相关联的主要电子邮件已被停用,禁用或删除。

如果您长时间不访问您的电子邮件地址,可能会发生这种情况。当他们发送到主要地址的电子邮件开始反弹时,Facebook可能会计算出来。

步骤,使其重新工作:

  1. 请确保您可以登录到您的电子邮件帐户和Facebook的 电子邮件没有被退回。

  2. 登录到Facebook和更改您的主电子邮件地址一些 其他电子邮件。

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

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

  5. Facebook将发送确认电子邮件,该电子邮件地址, 请打开它,然后点击它来确认您的电子邮件。

  6. 等待了几个小时,然后再试一次中提琴,您的电子邮件将 开始下来的JSON。

相关问题