[英]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.