繁体   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