繁体   English   中英

Facebook SDK v5 Graph返回错误:无效的OAuth访问令牌

[英]Facebook SDK v5 Graph returned an error: Invalid OAuth access token

免责声明:我是一个相对较新的PHP编码和Facebook SDK的新手。

我一直在尝试用他们的在线资料和示例来学习Facebook API,并发现它们相当缺乏。 我正在尝试做一些非常基本的事情 - 只需登录Facebook并检索一些用户值。

按照Facebook的例子,我有login.php,它看起来像这样:

<?php
session_start();

require_once __DIR__ . '/../_fb/autoload.php';

$fb = new Facebook\Facebook([
'app_id' => '26777overwritten335',
'app_secret' => '8260906deoverwrittenf286510',
'default_graph_version' => 'v2.6',
]);

$helper = $fb->getRedirectLoginHelper();
$permissions = ['email', 'user_likes']; // optional
$loginUrl = $helper->getLoginUrl('http://www.domain.com/_mdp/fb_dev/login-callback.php', $permissions);

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

......这似乎工作正常。

在login-callback.php页面上,我有以下内容:

    <?php
session_start();

require_once __DIR__ . '/../_fb/autoload.php';

$fb = new Facebook\Facebook([
    'app_id' => '267772overwritten335',
    'app_secret' => '8260906de2overwritten1f286510',
    'default_graph_version' => 'v2.6',
]);

$helper = $fb->getRedirectLoginHelper();
try {
    $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}

if (isset($accessToken)) {
    // Logged in!
    $_SESSION['facebook_access_token'] = (string) $accessToken;
    echo 'You are now logged in!';
    echo '<br> the access token is: ' . $accessToken . '<br>';

    // Now you can redirect to another page and use the
    // access token from $_SESSION['facebook_access_token']
}
// Am Successfully Logged In Here

try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get('/me?fields=id,name', '$accessToken');
} 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'];
// OR
// echo 'Name: ' . $user->getName();
?>

我似乎能够成功登录,因为我得到了来自该行的回声:

echo 'You are now logged in!';

我已经尝试了很多不同的代码示例并获得了各种错误,但上面的代码导致回显以下内容:

Graph returned an error: Invalid OAuth access token.

我用谷歌搜索了我能想到的每一种方式,并且还没有发现我做错了什么。

如果有人能告诉我我遗失的东西,并希望给我一些更正的代码,那肯定会受到赞赏。

此外,仅供参考 - 我真的想在SDK 5中使用图形版本2.6,因为它看起来有一些边缘可用,不在最近的版本中。

非常感谢任何指导我正确方向的帮助。

try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get('/me?fields=id,name', '$accessToken');

您在这里传递文字$accessToken - 这当然不是有效的访问令牌。

PHP不会使用单引号解析字符串中的变量。 请在这方面阅读http://php.net/manual/en/language.types.string.php ,这是您需要的基本知识。

然后,停止将简单变量放入字符串中。

try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get('/me?fields=id,name', $accessToken);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM