簡體   English   中英

Facebook PHP SDK如何從Facebook JavaScript SDK 2014獲取用戶電子郵件

[英]Facebook PHP SDK how to get user email from Facebook JavaScript SDK 2014

我同時使用Facebook PHP(4.0)和JS(2.0)SDK。 我可以使用PHP但不是用戶的電子郵件來獲取用戶配置文件數據。 用戶的電子郵件可以使用Javascript SDK,但我需要在PHP中使用它。

我用的是:

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

這有效但GraphUser類沒有在4.0中獲取用戶電子郵件的功能。

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

// 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']
);

GraphUser繼承自GraphObject因此您應該能夠使用泛型方法來獲取字段:

$user_profile->getProperty("email");

將登錄URL更改為

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

您還可以添加其他權限

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

在獲得登錄URL之前請求權限。

與Facebook登錄檢查權限這里

所以你可以收到用戶郵件

 $user_profile['email'];

和用戶名

$user_profile['username'];

更改FacebookRequest()參數如下。 更改getLoginUrl()參數如下

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

暫無
暫無

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

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