簡體   English   中英

如何使用圖形API獲取Facebook用戶的電子郵件地址?

[英]How to get the email address of a Facebook user using the graph API?

我一遍又一遍地閱讀這篇文章 ,但這對我來說沒有意義。

我想要做的是獲取Facebook用戶的電子郵件地址,以便我可以將其存儲在字符串中並進行比較,以查看它是否與我的MySQL數據庫中現有用戶的電子郵件相匹配。 當用戶首次授予對應用程序的訪問權限時,我只需要執行此操作。

在我的應用開發人員界面的“經過身份驗證的引薦”部分中,我已將“用戶和朋友權限”設置為包含“電子郵件”。

在我網站的“畫布”區域內,我有以下代碼:

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()$ user,我可以看到用戶ID(雖然不是很多)似乎是正確的,所以我相信我連接到Facebook上的正確位置。

但是后來有這個建議的代碼行 ,這意味着它會返回一個電子郵件地址,但是當我回顯它看看它的樣子時,它不會返回一個電子郵件地址:

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

我覺得它不會,因為它看起來不對我,但另一方面,我只是不知道還有什么用它或放在哪里。

然后我也遇到了這篇文章 ,其中的代碼與HTML混合在一起讓我更加困惑。

假設我的用戶已授予我的應用程序查看其電子郵件的權限,是不是有一種簡單的方法來獲取它? 像我這樣沒有經驗的程序員可以掌握的東西?

正如注釋中所建議的那樣,您應該用scope替換req_perms ,因為它是字段的名稱,指示用戶授予哪些permissions

一旦授予了email許可(您是否在Auth Dialog中看到它?),您將能夠通過Graph API獲取email字段。 您還可以通過在fields參數中指定'em來僅檢索結果中的fields

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

順便說一句 ,請注意,你提到的這兩個帖子都是舊版(2010年),平台上的許多內容都發生了變化。 請務必閱讀有關權限身份驗證的更新文檔

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

您可以從以下網址找到有關Facebook Connect的更多信息: http//25labs.com/tutorial-integrate-facebook-connect-to-your-website-using-php-sdk-v-3-xx-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'];
}

您可以將Facebook用戶名與電子郵件地址連接起來。 例如,我的用戶名是Facebook上的“umair.hamid.79”。 它將是“umair.hamid.79@facebook.com”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM