2013-10-11 52 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。

相關問題