2013-07-08 83 views
43

對於我們應用程序中的某些用戶,即使用戶已授予應用程序的電子郵件訪問權限,電子郵件字段也會返回NULL。 當我們通過調試器工具檢查範圍參數和用戶令牌的有效性時,一切正常。權限電子郵件已被接受。 但是,當我們使用有效的用戶令牌向圖形API請求用戶的電子郵件時,它根本沒有出現。Facebook電子郵件字段返回空(即使「電子郵件」權限已設置並被接受)

用戶可以阻止應用程序收到他的電子郵件,即使他授予了電子郵件權限嗎?

感謝

+0

對於PHP SDK,此[鏈接](http://stackoverflow.com/questions/25069816/facebook-email-field-return-null-even-if-the-email-permission-is-set- and-acce/36332882#36332882)可能會有幫助! –

+0

確保OAuth調用您使用包含'scope:['email']'獲得訪問令牌。請務必使用[圖形API資源管理器](https://developers.facebook.com/tools/explorer/)嘗試使用標記,並確保左側的「電子郵件」權限*不會變灰。 –

回答

83

我有同樣的問題,我想我找到了原因: 如果用戶有一個未經確認的電子郵件在Facebook(即Facebook發給他一個驗證郵件到用戶的電子郵件地址,但他沒有迴應)Facebook不會即使他給了你電子郵件許可,也會將該電子郵件傳遞給你的應用。

所以我做的是使用他或她的Facebook電子郵件,如果用戶有一個用戶名(即[email protected])。

+7

我剛剛確認了這個問題。即使在明確要求用戶電子郵件之後,Facebook也不會將此信息提供給您的應用程序,直到用戶確認他的電子郵件。謝謝您的回答。我追了很久。 –

+1

歡迎您,如果只有@BenjaminNaïm會將我的答案標記爲正確...... :) – ozba

+0

未經確認的電子郵件也會阻止Facebook上的圖像回覆? –

2

在某些情況下,Facebook可能沒有一個有效的電子郵件地址的用戶:

電子郵件:含有效RFC822電子郵件地址字符串 - 注意:這 領域可能,如果爲空不電子郵件地址是供用戶

看到https://developers.facebook.com/docs/reference/api/user/

1

的Facebook w ^虐待提供給你一個用戶的電子郵件ID,當且僅當該用戶有一個確認的電子郵件ID與他的帳戶相關聯。如果您的應用可以爲某些用戶檢索電子郵件ID,則開發人員可能無法解決問題。

0

你可以嘗試這個工作 String email = user.getProperty(「email」)。toString(); 字符串safeEmail = user.asMap()。get(「email」)。toString();

2

您必須提供電子郵件許可以及授權按鈕。

authButton.setReadPermissions(Arrays.asList("email")); 
1

@ozba解決方案不適用,因爲當用戶擁有未經確認的電子郵件地址時,Facebook現在會顯示一條警報消息。所以,如果你遇到這個問題,那麼用戶更喜歡用電話號碼註冊。 Message when trying to access email

一些可能的原因:

  • 的帳戶沒有電子郵件地址(僅限電話號碼)
  • 用戶進入這需要他們重新確認自己的電子郵件安全檢查帳戶沒有確認的電子郵件地址地址,他們還沒有這樣做,所以用戶的電子郵件地址無法訪問。

檢查:https://developers.facebook.com/bugs/298946933534016

8

我有同樣的問題。這是在我的本地工作正常,我使用Facebook登錄PHP SDK,當我提出我的要求是全部歸還,如電子郵件領域,用戶名等,但在服務器上不知它是不是working.It不會返回用戶的電子郵件。 我已經做了很多上的R & d和我對這個問題的解決方案。 :)

$profile = $facebook->api('/me?fields=email,first_name,last_name'); 

如果你正在使用PHP-SDK只是傳遞領域這樣它返回的電子郵件,FIRST_NAME等 希望它能爲你工作的所有。 謝謝。

+1

謝謝,這對我有幫助。 –

-1
$loginUrl = $facebook->getLoginUrl(
    array(
    'req_perms' => 'email' 
) 
); 
0

您需要從facebook的多一個許可。

包括(about_me)權限facebook的開發環境,並在您的應用程序或代碼..

1

按照documentation

注意,即使您請求的電子郵件的權限是不保證你會得到一個電子郵件地址。例如,如果有人使用電話號碼而不是電子郵件地址註冊Facebook,則電子郵件字段可能爲空。

這可以解釋爲什麼有些用戶有一個null電子郵件!

+0

我有一個主要的電子郵件帳戶,它已驗證,但它不是來 – Swati

0

我看了以前的答覆,但儘管他們中的一些真實的一樣,如果用戶沒有電子郵件確認,但手機號碼,很多時候這個錯誤發生忽視瞭如何使用FB圖形API請求信息。比方說,你的登錄已經成功完成,你現在有一個訪問令牌和用戶ID等,但仍不能看到電子郵件和其他領域你有興趣來吧使用確認登錄狀態後,這個請求作爲連接:

FB.api(
    '/me', 
    'GET', 
    {"fields":"id,name,birthday,email,about,cover"}, 
    function(response) { 
     // Insert your code here 
    } 
); 

取決於你的要求,你現在可以根據自己的需要追趕的進一步信息的權限。

2

所有你需要知道:

1)Link 1

一些可能的原因:

的帳戶沒有電子郵件地址

沒有證實,對帳戶的電子郵件地址

帳戶上沒有經過驗證的電子郵件地址

用戶進入這需要他們重新確認他們的電子郵件地址的安全檢查站,他們還沒有這樣做

  • 用戶的電子郵件地址是不可達

  • 您還需要「電子郵件」擴展權限,即使對於在文件中有 有效的,確認的,可到達的電子郵件地址的用戶也是如此。

2)Link 2

注意,即使你要求它不能保證 電子郵件的權限,你會得到一個電子郵件地址。例如,如果某人使用電話號碼(而不是電子郵件地址)註冊了 Facebook,則電子郵件地址 可能爲空。

相關問題