Get Facebook User ID in FB PHP SDK 4.0

In the FB SDK 3.0, you can run $facebook->getUser()to get a user id.

SDK 4.0 no longer has a BaseFacebook object; I do not see how to get the user ID from FacebookSession created by FacebookJavaScriptLoginHelper. How do you do this?

+4
source share
4 answers

If you already have an active session or access token, you can do the following to get user_id:

// set session from cookie or via helper
$session = new FacebookSession( $session->getToken() );
$user_id = $session->getSessionInfo()->asArray()['user_id']
echo $user_id

. , cookie . , user_id SDK. .

+7

PHP SDK v4.0.3 . , user_id, .

, $session->getSessionInfo()->getId() /debug_token, .

, FacebookRequest /me, . ( .)

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

Facebook SDK 4.0.9. AJAX, :

  • fb sdk wrapper, FacebookSession::setDefaultApplication(<ID>, <SECRET>

  • get_user_id :

    public function get_user_id() {
        $sr = new SignedRequest((new FacebookJavaScriptLoginHelper())->getRawSignedRequestFromCookie());
        return $sr->getUserId();
    }
    

getRawSignedRequestFromCookie https://github.com/facebook/facebook-php-sdk-v4/blob/master/src/Facebook/Helpers/FacebookSignedRequestFromInputHelper.php#L159-L165

FacebookJavaScriptLoginHelper , , ( ): https://github.com/facebook/facebook-php-sdk-v4/tree/master/src/Facebook/Helpers

0

$session, :

$session->getUserId();

In my code, I log in with the Javascript SDK, then in PHP:

FacebookSession::setDefaultApplication($api_key, $api_secret);
$helper = new FacebookJavaScriptLoginHelper();
try {
    $session = $helper->getSession();
    $output = $session->getUserId();
} catch(FacebookRequestException $ex) {
    // When Facebook returns an error
    $output = '-1';
} catch(\Exception $ex) {
    // When validation fails or other local issues
    $output = '-2';
}
0
source

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


All Articles