【发布时间】:2016-11-15 12:26:30
【问题描述】:
免责声明:我对 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.
我已经用谷歌搜索了我能想到的所有方法,但还没有发现我做错了什么。
如果有人能告诉我我在哪里遗漏了什么,并希望能给我一些更正的代码行,我将不胜感激。
另外,仅供参考 - 我真的很想将图形版本 2.6 与 SDK 5 一起使用,因为它似乎有一些可用的边在最近的版本中没有。
非常感谢您为我指明正确方向的任何帮助。
【问题讨论】:
标签: php facebook facebook-graph-api oauth