通过Graph API检索用户配置文件时Facebook PHP SDK访问令牌问题

通过Graph API检索用户配置文件时Facebook PHP SDK访问令牌问题,php,facebook,facebook-graph-api,access-token,facebook-access-token,Php,Facebook,Facebook Graph Api,Access Token,Facebook Access Token,我试图在我的网站中检索用户配置文件。 但是在我拿到访问令牌之后,我就不能使用它了。结果是 Graph returned an error: Invalid OAuth access token 我可以通过下面的代码获得访问令牌 Login.php session_start(); require_once __DIR__ . '/facebook-php-sdk-v4-5.0-dev/src/Facebook/autoload.php'; $fb = new Facebook\Facebo

我试图在我的网站中检索用户配置文件。 但是在我拿到访问令牌之后,我就不能使用它了。结果是

Graph returned an error: Invalid OAuth access token
我可以通过下面的代码获得访问令牌

Login.php
session_start();

require_once __DIR__ . '/facebook-php-sdk-v4-5.0-dev/src/Facebook/autoload.php';

$fb = new Facebook\Facebook([
  'app_id' => 'I have insert correct app id',
  'app_secret' => 'and app secret',
  'default_graph_version' => 'v2.0',
  ]);

$helper = $fb->getRedirectLoginHelper();
$permissions = ['email'];
$loginUrl = $helper->getLoginUrl('http://myweb.com/login-callback.php', $permissions);

echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>';
?>
session_start();
需要一次目录/facebook-php-sdk-v4-5.0-dev/src/facebook/autoload.php';
$fb=新Facebook\Facebook([
'应用程序id'=>'我已插入正确的应用程序id',
“app_secret”=>“和app secret”,
“默认图形版本”=>“v2.0”,
]);
$helper=$fb->getRedirectLoginHelper();
$permissions=['email'];
$loginUrl=$helper->getLoginUrl('http://myweb.com/login-callback.php“,$permissions);
回声';
?>
下面是login callback.php

session_start();

require_once __DIR__ . '/facebook-php-sdk-v4-5.0-dev/src/Facebook/autoload.php';

$fb = new Facebook\Facebook([
  'app_id' => 'I have insert correct app id',
  'app_secret' => 'and app secret',
  'default_graph_version' => 'v2.0',
  ]);

$helper = $fb->getRedirectLoginHelper();
$permissions = ['email'];
$loginUrl = $helper->getLoginUrl('http://myweb.com/login-callback.php', $permissions);

echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>';
?>
<?php

session_start();

require_once __DIR__ . '/facebook-php-sdk-v4-5.0-dev/src/Facebook/autoload.php';

$fb = new Facebook\Facebook([
  'app_id' => 'I have insert correct app id',
  'app_secret' => 'and app secret',
  'default_graph_version' => 'v2.0',
  ]);

  $helper = $fb->getRedirectLoginHelper();

  try {
    $accessToken = $helper->getAccessToken();
  } catch(Facebook\Exceptions\FacebookResponseException $e) {
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
  } catch(Facebook\Exceptions\FacebookSDKException $e) {
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
  }

  if (! isset($accessToken)) {
    if ($helper->getError()) {
      header('HTTP/1.0 401 Unauthorized');
      echo "Error: " . $helper->getError() . "\n";
      echo "Error Code: " . $helper->getErrorCode() . "\n";
      echo "Error Reason: " . $helper->getErrorReason() . "\n";
      echo "Error Description: " . $helper->getErrorDescription() . "\n";
    } else {
      header('HTTP/1.0 400 Bad Request');
      echo 'Bad request';
    }
    exit;
  }

  $_SESSION['fb_access_token'] = (string) $accessToken;

  try {
    $response = $fb->get('/me?fields=id,name', "'".$_SESSION['fb_access_token']."'");
  } catch(Facebook\Exceptions\FacebookResponseException $e) {
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
  } catch(Facebook\Exceptions\FacebookSDKException $e) {
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
  }

  $user = $response->getGraphUser();

  echo 'Name: ' . $user['name'];
  ?>
我只有:

$response = $fb->get('/me?fields=id,name', $token);
$user = $response->getGraphUser();

它工作得很好

我认为您应该更改代码: “$\u会话['fb\u访问\u令牌]。”“
$accessToken

然后再试一次

为什么您要自己将访问令牌传递给
get
方法?通常情况下,SDK应该能够自行处理此问题,一旦您获得有效的访问令牌,它会将其存储起来以备将来使用。感谢您的回答!但是我应该如何通过访问令牌检索用户配置文件呢?我只想通过使用带有访问令牌@CBroeSimply
$fb->get('/me?fields=id,name')的“get”方法获取用户数据,如果您以前让SDK获取用户访问令牌,那么它应该可以正常工作。
现在就可以工作了!谢谢我在哪里可以买到“代币”?