2012-04-19 163 views
1

獲取用戶的電子郵件ID從Facebook PHP SDK從Facebook PHP SDK獲取用戶的電子郵件ID

我試着用下面的代碼

首先

$user_profile = $facebook->api('/me'); // or $facebook->api('/me?fields=email') 
print_r($user_profile); 

$user = $facebook->getUser(); 
$url = "https://api.facebook.com/method/fql.query"; 
    $url .= "?access_token=" . $access_token; 
    $url .= "&query=SELECT email FROM user WHERE uid={$user}"; 
    $userData = simplexml_load_file($url); 
    $userEmail = $userData->user->email; 
    print_r($userEmail); 

第三個

$user = $facebook->getUser(); 
$fql = "select name, hometown_location, sex, pic_square, email from user where uid='$user'"; 
     $param = array(
      'method'  => 'fql.query', 
      'query'  => $fql, 
      'access_token' =>$access_token , 
      'callback' => '' 
     ); 

     $fqlResult2 = $facebook->api($param); 

    print_r($fqlResult2); 

這些都不會得到登錄用戶的電子郵件ID。如何檢索它?

回答

2

FBML(這將成爲history推出)

<fb:login-button autologoutlink="true" perms="email"></fb:login-button> 

PHP

$loginUrl = $facebook->getLoginUrl(
    array(
    'scope' => 'email' 
) 
); 

JS

FB.login(function(response) { 
    if (response.authResponse) { 
     // conosle.log('User logged in'); 
    } else { 
     // console.log('User cancelled login or did not fully authorize.'); 
    } 
}, { 
    scope: 'email' 
});​ 

獲取email使用圖形API

FB.api('/me', function(user) { 
    if (user) { 
     User.email = user.email; 
    } 
});​ 
+0

Afaik,req_perms現在被稱爲「範圍」。或者我在這裏混合了一些東西。 – TheSHEEEP 2012-04-19 10:56:52

+0

據我記得,它是PHP中的req_perms和範圍在JS中,請糾正我,如果我錯了 – Dhiraj 2012-04-19 10:58:15

+0

它絕對是PHP中的「範圍」。我們正在使用它,並且它可以工作,所以;) – TheSHEEEP 2012-04-19 11:04:08

1

您需要訪問用戶的電子郵件地址。所以你的應用程序必須要求「電子郵件」permission

This site有一些指導如何從用戶那裏獲得這些權限(或者更確切地說是要求他們)。

按照JS SDK documentation,你需要做到以下幾點:

FB.login(function(response) { 
    // handle the response 
}, {scope: 'email,user_likes,...'}); 
+0

是的,我怎麼會在這裏給出的權限? – 2012-04-19 10:51:52

+0

添加了一些指南的鏈接。 – TheSHEEEP 2012-04-19 10:53:55

+0

我並行添加了Javascript SDK和PHP SDK。所以在我的代碼'FB.Event.subscribe('auth.login',function(response){window.location.reload(); },{scope:'email'});'不起作用.. – 2012-04-19 10:55:13

1

更改如下代碼:

$facebook->api('/me?locale=en_US&fields=name,email'); 

getLoginUrl(array(
    'scope' => 'email' 
)); 
相關問題