【发布时间】:2015-12-16 00:48:07
【问题描述】:
我已按照本教程https://www.sammyk.me/upgrading-the-facebook-php-sdk-from-v4-to-v5 进行操作,到目前为止,我已成功将 SDK 集成到 codeignitor 等中
在我的控制器中我有
function facebook(){
require_once __DIR__ . '/../vendor/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => 'xxx',
'app_secret' => 'xxx',
'default_graph_version' => 'v2.5',
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email', 'user_posts']; // optional
$callback = 'http://localhost/project/api/index.php/social/facebook-callback';
$loginUrl = $helper->getLoginUrl($callback, $permissions);
echo $loginUrl;
}
这会为我生成一个 url。然后我点击这个链接,它把我带到 facebook 我点击确定然后它进入一个重定向页面。 在那个页面上我有
function facebook_callback(){
require_once __DIR__ . '/../vendor/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => 'xxx',
'app_secret' => 'xxx',
'default_graph_version' => 'v2.5',
]);
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// There was an error communicating with Graph
echo $e->getMessage();
exit;
}
if (isset($accessToken)) {
// User authenticated your app!
// Save the access token to a session and redirect
$_SESSION['facebook_access_token'] = (string) $accessToken;
// Log them into your web framework here . . .
// Redirect here . . .
exit;
} elseif ($helper->getError()) {
// The user denied the request
// You could log this data . . .
var_dump($helper->getError());
var_dump($helper->getErrorCode());
var_dump($helper->getErrorReason());
var_dump($helper->getErrorDescription());
// You could display a message to the user
// being all like, "What? You don't like me?"
exit;
}
// If they've gotten this far, they shouldn't be here
http_response_code(400);
exit;
}
当我登陆页面时出现错误
跨站请求伪造验证失败。缺少必需的参数“状态”。
为什么会这样?这与会话有关吗?我已按照教程进行操作,但似乎没有任何效果。我发现的任何其他文档都尝试过,例如 session_start(); 和 Overwriting Persistent Data 但没用!
我们将不胜感激任何正确方向的观点。我用谷歌搜索了这个负载,没有明确的答案。
最好的问候
【问题讨论】:
标签: php facebook codeigniter facebook-graph-api sdk