2012-03-19 158 views
4

我已經通過this post一遍又一遍地讀,但它並沒有道理給我。如何使用圖形API獲取Facebook用戶的電子郵件地址?

我所試圖做的是獲取Facebook的用戶的電子郵件地址,以便我可以將其存儲在一個字符串和比較,看它是否現有用戶的電子郵件匹配我的MySQL數據庫。我只需要在用戶首次授予應用訪問權限時執行此操作。

在我的應用開發者界面的「Authenticated Referrals」部分,我設置了「用戶&朋友權限」以包含「email」。

在我的網站的「畫布」區域,我有這樣的代碼:

include('facebook/base_facebook.php'); 
include('facebook/facebook.php'); 
$facebook = new Facebook(array(
    'appId' => "XXXXXXXXXXXXXXX", 
    'secret' => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 
)); 
$user = $facebook->getUser(); 
if ($user) 
{ 
    try { 
     $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
     $user = null; 
    } 
} 

如果我var_dup()$的用戶,我可以看到該用戶ID(雖然不是什麼其他東西),這似乎是正確的,所以我相信我連接到Facebook上的正確位置。

但隨後出現了this suggested line of code,這意味着它返回一個電子郵件地址,但是當我贊同它,看看它是什麼樣子,它不返回的電子郵件地址:

echo "<br/>" . $facebook->getLoginUrl(array('req_perms' => 'email')); 

我種我認爲它不會,因爲它對我來說看起來不太合適,但另一方面,我不知道還有什麼要處理它或在哪裏放置它。

然後我也碰到this post,其代碼在令我感到困惑,甚至進一步的方式HTML混合。

假設我的用戶已獲准用於我的應用程序,看看他們的電子郵件,是不是有它得到一個簡單的方法?像我這樣一個沒有經驗的程序員可以掌握的東西?

+2

你是如何實現Facebook登錄?官方的PHP SDK和JavaScript SDK?現在它應該是範圍不req_perms – arma 2012-03-19 09:55:34

回答

4

您正在使用過時的方法。您可以使用下面的代碼來檢索電子郵件。

您可以找到有關Facebook連接的更多信息:http://25labs.com/tutorial-integrate-facebook-connect-to-your-website-using-php-sdk-v-3-x-x-which-uses-graph-api/

$app_id  = "xxxxxxxxx"; 
$app_secret = "xxxxxxxxxx"; 
$site_url = "xxxxxxxxxxxxx"; 

include_once "src/facebook.php"; 

$facebook = new Facebook(array(
    'appId'  => $app_id, 
    'secret' => $app_secret, 
    )); 

$user = $facebook->getUser(); 

if($user){ 
    try{ 
     $user_profile = $facebook->api('/me'); 
    }catch(FacebookApiException $e){ 
     $user = NULL; 
    } 
} 

if($user){ 
    $logoutUrl = $facebook->getLogoutUrl(); 
}else{ 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope'   => 'email', 
     'redirect_uri' => $site_url, 
     )); 
} 

if($user){ 
    Echo "Email : " . $user_profile['email']; 
} 
4

正如評論中所建議的,您應該將req_perms替換爲scope,因爲它是指示哪個permissions將由用戶授予的字段的名稱。

一旦email權限被授予(您是否看到它在Auth對話框中被詢問?),您將可以通過圖形API獲取email字段。您也可以通過指定「時間在fields參數檢索結果只有必填字段:

$facebook->api('/me', array('fields' => 'id,email')); 

BTW,請不在於你是指這兩個職位到老(2010年),在平臺的方式改變了很多東西。請務必閱讀關於PermissionsAuthentication的更新文檔

+0

最後,我發現如何獲取用戶數據!謝謝! :) – 2015-09-26 13:17:10

0

您可以連接一個Facebook的用戶名與電子郵件地址。例如,我的用戶名是Facebook上的「umair.hamid.79」。這將是「[email protected]」。

相關問題