Facebook PHP SDK how to get email from Facebook JavaScript SDK 2014

I use both PHP (4.0) and JS (2.0) SDKs together. I can get user profile data using PHP, but not email the user. User email is available using the Javascript SDK, but I need it in PHP.

I used:

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

This works, but the GraphUser class does not have a function to capture user email in 4.0.

Any ideas how I can capture user email using PHP SDK version 4.0?

+4
source share
4 answers

GraphUser GraphObject, :

$user_profile->getProperty("email");
+11
// 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']
);
+13

URL-

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

you can also add additional permissions, for example

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

Request permission before you get the login URL.

check permissions with facebook login here

So, you can get the user's email address

 $user_profile['email'];

and username

$user_profile['username'];
+9
source

Change the FacebookRequest () parameter as shown below. change the getLoginUrl () parameter as shown below

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

Source: https://habr.com/ru/post/1547818/


All Articles