簡體   English   中英

無法使用php在Facebook sdk 5登錄中獲取訪問令牌?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM