2014-07-09 93 views
4

我正在同時使用Facebook PHP(4.0)和JS(2.0)SDK。 我可以用PHP獲取用戶配置文件數據,但不能獲取用戶的電子郵件。 用戶的電子郵件可用於Javascript SDK,但我需要它在PHP中。Facebook PHP SDK如何從Facebook獲得用戶電子郵件JavaScript SDK 2014

我所用:

$user_profile = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className()); 

這工作,但該類GraphUser不具備的功能來獲取用戶的電子郵件中的4.0。

任何想法如何使用Facebook PHP SDK 4.0獲取用戶的電子郵件?從GraphObject

回答

11

GraphUser繼承,所以你應該能夠使用通用的方法來抓住一個領域:

$user_profile->getProperty("email"); 
+5

這隻能在 '$幫手=新\ Facebook的\ FacebookRedirectLoginHelper( '您的網址'); $ helper-> getLoginUrl(array('scope'=>'email'));獲取LoginURL時調用' 。 – garyee

9

更改登錄網址

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

你也可以添加像

其他權限
$loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'email, user_activities ' 
)); 

Request permissio ns在您登錄網址之前。

與Facebook登錄here

檢查權限,以便您可以通過

$user_profile['username']; 
13
// Facebook SDK v5 for PHP 
// https://developers.facebook.com/docs/php/howto/example_access_token_from_javascript/5.0.0 

session_start(); 

$fb = new Facebook\Facebook([ 
    'app_id' => '{app-id}', 
    'app_secret' => '{app-secret}', 
    'default_graph_version' => 'v2.4', 
]); 

$helper = $fb->getJavaScriptHelper(); 
$accessToken = $helper->getAccessToken(); 

$fb->setDefaultAccessToken((string) $accessToken); 

$response = $fb->get('/me?locale=en_US&fields=name,email'); 
$userNode = $response->getGraphUser(); 

var_dump(
    $userNode->getField('email'), $userNode['email'] 
); 
4

變化FacebookRequest(),如下參數獲得用戶的電子郵件

$user_profile['email']; 

和用戶名。 變化getLoginUrl()參數如下

$request = new FacebookRequest($session, 'GET', '/me?locale=en_US&fields=name,email'); 
$loginUrl = $helper->getLoginUrl(array(
    'scope' => 'email' 
)); 
+2

您可以通過提供更多信息來擴展您的答案嗎?爲什麼OP應該使用這段代碼? – Zippy

+0

這是唯一對我有用的答案。但是我沒有在getLoginUrl之前調用FacebookRequest,而是與getGraphUser() – besimple

相關問題