gpt4 book ai didi

php - Heroku 上的 Facebook PHP 应用程序未收到signed_request

转载 作者:行者123 更新时间:2023-12-04 05:10:39 30 4
gpt4 key购买 nike

我添加了一个 PHP/JavaScript 应用程序作为 Facebook 页面选项卡,并将它托管在 Heroku 上。但是它没有收到signed_request。当我在自己的服务器上托管选项卡时,它会很好地完成,而不是在 Heroku 上。

这是代码:

require_once('sdk/src/facebook.php');

$facebook = new Facebook(array(
'appId' => AppInfo::appID(),
'secret' => AppInfo::appSecret(),
'sharedSession' => true,
'trustForwarded' => true,
'cookie' => true
));

$signed_request = $facebook->getSignedRequest();
$liked = $signed_request['page']['liked'];

if( $liked ) {
echo('fan');
}
else {
echo('not a fan ') ;
}

可能是什么问题?

最佳答案

我有同样的问题。如果您正在使用 heroku 的基本 php 模板,请删除此代码,这会在生产中强制使用 https:

// Enforce https on production
if (substr(AppInfo::getUrl(), 0, 8) != 'https://' && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
header('Location: https://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit();
}

当用户不使用安全连接时,此行重定向到另一个丢失 POST 请求的页面。

如果您想保留它,您可以尝试使用 GET 方法发送signed_request。它可能看起来像这样:
// Enforce https on production
if (substr(AppInfo::getUrl(), 0, 8) != 'https://' && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
$signed_request = "";
if (isset($_REQUEST['signed_request'])){
$signed_request = "&signed_request=" . $_REQUEST['signed_request'];
}
header('Location: https://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . "?" . $signed_request );
exit();
}

这就是我的解决方案。

关于php - Heroku 上的 Facebook PHP 应用程序未收到signed_request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14970218/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com