[英]Can't get the access token in facebook sdk 5 login using php?
我将文件托管在heroku托管中。 Facebook登录回调文件将同时引发这两个异常。
第一个例外
响应异常:无法加载URL:此URL的域未包含在应用程序的域中。 为了能够加载此URL,请将应用程序的所有域和子域添加到应用程序设置的“应用程序域”字段中。
重新加载后的第二个异常
SDK异常:跨站点请求伪造验证失败。 永久数据中缺少必需的参数“状态”。
FB-callback.php
<?php
require_once "config.php";
try {
$accessToken = $helper->getAccessToken();
} catch (\Facebook\Exceptions\FacebookResponseException $e) {
echo "Response Exception: " . $e->getMessage();
exit();
} catch (\Facebook\Exceptions\FacebookSDKException $e) {
echo "SDK Exception: " . $e->getMessage();
exit();
}
if (!$accessToken) {
header('Location: login.php');
exit();
}
$oAuth2Client = $FB->getOAuth2Client();
if (!$accessToken->isLongLived())
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
$response = $FB->get("/me?fields=id,name,email", $accessToken);
$userData = $response->getGraphNode()->asArray();
$_SESSION['userData'] = $userData;
$_SESSION['access_token'] = (string) $accessToken;
header('Location: index.php');
exit();
?>
我尝试删除try catch块,只是使用了以下语句
$accessToken = $helper->getAccessToken();
这导致错误500
此页面无效
fanism.herokuapp.com当前无法处理此请求。 HTTP错误500
config.php (用于fb-callback.php)
<?php
session_start();
require_once "Facebook/autoload.php";
$FB = new \Facebook\Facebook([
'app_id' => '952208124958752',
'app_secret' => '9088c861803fda4dadbe950915ae14f2',
'default_graph_version' => 'v2.10'
]);
$helper = $FB->getRedirectLoginHelper();
?>
使用以下代码在项目文件夹中创建了composer.json文件
{
"require" : {
"facebook/graph-sdk" : "~5.0"
}
}
在项目文件夹中运行命令(命令提示符)
composer install
facebook sdk文件夹( 供应商 )下载,然后从该供应商文件夹中取出Facebook文件夹并将其粘贴到项目中。(删除了以前手动下载的Facebook文件夹)
然后我通常将该文件上传到Heroku。 终于解决了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.