2011-09-29 46 views
20

我的應用程序使用帶有OAuth令牌的「https://graph.facebook.com/me」請求來獲取有關用戶的屬性。電子郵件地址是我們需要的屬性之一,當我們請求訪問時,我們會明確要求該許可。Facebook中間歇性缺少電子郵件地址API

它在99%的時間內正常工作,但有幾次響應沒有任何對象在名爲「email」的jSON數據中返回。

有沒有解釋爲什麼會發生這種情況,比如用戶可以授予我們許可但仍然阻止他們的電子郵件地址的方式?或者可以在另一個關鍵字下找到它?

謝謝。

+0

您是否有解決方法? –

+0

可能除了別人在說什麼外,兒童的Facebook賬戶沒有電子郵件,或者他們的電子郵件從這種訪問中被忽略。對於我的客戶來說,這意味着他們根本不被允許使用該應用程序。 – changokun

+0

未經確認的電子郵件不通過API發送: http://stackoverflow.com/questions/17532476/faceboofk-email-field-return-null-even-if-the-email-permission-is-set-and-acce –

回答

3

用戶可以撤銷應用程序隱私設置頁面上的電子郵件地址權限,而無需撤消完整的應用程序。您可以先撥打/我/權限以確保電子郵件許可權仍被授予。

+1

這是有道理的,但我不能重複的問題。當我使用我自己的帳戶訪問應用程序隱私設置時,它會將「發送給我的電子郵件」權限列爲「必需」,並且不會讓我撤銷它。 –

+0

我遇到同樣的問題。我有一個用戶在/我被調用時不會返回電子郵件。我檢查了/我/權限和電子郵件= 1。是否有可能它是一個Facebook的錯誤,或者用戶沒有註冊電子郵件? –

+0

它看起來像一個錯誤。我會在這裏登錄:https://developers.facebook.com/bugs – bkaid

8

移動註冊表格http://touch.facebook.com/r.php允許您使用電子郵件地址或電話號碼進行註冊。所以我不認爲所有Facebook用戶都有一個電子郵件地址與他們存儲在一起。

+1

更多信息:https://開發人員。 facebook.com/bugs/298946933534016 – Somatik

+0

+1,用戶也有可能沒有通過其他方法獲得確認的電子郵件地址,例如他們的電子郵件地址不再有效,或者他們沒有確認電子郵件地址 – Igy

1

有同樣的問題,並發現在這種情況發生的罕見情況下,用戶沒有定義的主要電子郵件地址(雖然2地址已註冊)。我們無法複製這樣的星座,因爲通常不可能不具有主要的電子郵件地址。

任何人都可以確認類似的東西嗎?

2

缺少電子郵件字段發生在用戶未通過單擊激活消息中的鏈接確認其主要地址的情況下。

10

簡短的回答:不是所有的用戶都有一個郵件地址,和那些誰可能沒有一個有效的,可到達的電子郵件地址

user對象的email領域的文檔(https://developers.facebook.com/docs/reference/api/user/)澄清此預期的行爲,它是: 「如果沒有有效的電子郵件地址可用,則不會返回此字段」

在許多情況下,您可能認爲用戶應該返回一個電子郵件地址,但他們不會。一些常見原因:

  • 的帳戶沒有電子郵件地址
  • 沒有證實,對帳戶驗證的電子郵件地址
  • 用戶進入這需要他們重新確認他們的電子郵件地址的安全檢查站,他們還沒有這樣做
  • 用戶的電子郵件地址是不可達

您還需要email擴展權限(用戶可以選擇不允許),甚至誰擁有用戶VAL ID,確認,可到達的電子郵件地址在文件上。

+0

來源: https://developers.facebook.com/bugs/298946933534016 – nvioli

+1

我將此答案複製到該錯誤報告中:P – Igy

3

如果您正在使用Facebook的SDK 2.4或更高版本,你需要在戰略

下面添加「田」是oAuth library一個例子。

FacebookStrategy.php線131

BEFORE:

$me = $this->serverGet('https://graph.facebook.com/me', array('access_token' => $access_token), null, $headers); 

AFTER:

$me = $this->serverGet('https://graph.facebook.com/me', array('access_token' => $access_token,'fields'=>'email,name,first_name,last_name,age_range,gender'), null, $headers); 

不管字段列表中,如果你想獲得更多的信息這不是默認提供的通過Facebook,權限需要在「範圍」數組中。

SDK提供的默認數據包括:電子郵件,公共個人資料,用戶朋友

相關問題