gpt4 book ai didi

php - 关于使用 PHP 的 Facebook session 的基本问题

转载 作者:可可西里 更新时间:2023-11-01 00:36:38 26 4
gpt4 key购买 nike

所以我对 Facebook 开发和 PHP 开发还很陌生,所以请放心。

我已经创建了一个 iframe Facebook 应用程序。我可以轻松获取已签名的请求并使用该信息在我的页面上执行基本任务。

真正的问题发生在我开始在 Facebook 中浏览我的应用程序时。我好像丢失了我的签名请求信息。

我在每个页面上都包含了我的 PHP 代码,但我仍然无法保留我签名的请求或 session ......无论它叫什么。

我在下面粘贴了我的基本 PHP 代码。

<?php

include_once "../lib/facebook.php";

$facebook = new Facebook(array(
"appId" => FACEBOOK_APP_ID,
"secret" => FACEBOOK_SECRET_KEY,
"cookie" => true,
"domain" => SERVER_DOMAIN
));

function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode(".", $signed_request, 2);

// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);

if (strtoupper($data["algorithm"]) !== "HMAC-SHA256") {
error_log("Unknown algorithm. Expected HMAC-SHA256");
return null;
}

// check sig
$expected_sig = hash_hmac("sha256", $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log("Bad Signed JSON signature!");
return null;
}

return $data;
}

function base64_url_decode($input) {
return base64_decode(strtr($input, "-_", "+/"));
}


session_start();

if (isset($_SESSION['fb_data'])) {
$data = $_SESSION['fb_data'];
} else {
$data = parse_signed_request($_REQUEST["signed_request"], FACEBOOK_SECRET_KEY);
$_SESSION['fb_data'] = $data;
}

session_write_close();

$page_id = $data["page"]["id"];
$like_status = $data["page"]["liked"];

?>

最佳答案

signed_request 仅在首次作为 Facebook Canvas 页面加载时传递到您的页面。 signed_request 作为 POST 变量传入。如果您在 iframe 级别而不是顶级导航到不同的页面,您将丢失 signed_request 参数。

例如,当用户加载此页面时:

http://apps.facebook.com/test_app/ 

Facebook 会将其加载到其 IFrame 中:

http://yourserver.com/test_app/
  • 同时将 signed_request 作为 POST 变量传递。

如果您随后使用以下标签导航到不同的页面:

<a href="http://yourserver.com/test_app/page2"> Page 2 </a>

signed_request 参数将丢失。

相反,您可以将 signed_request 参数作为 GET 变量传递:

<a href="http://yourserver.com/test_app/page2?signed_request=xxxxx"> Page 2 </a>

或者在顶层重新加载页面:

<a target="_top" href="http://apps.facebook.com/test_app/page2"> Page 2 </a>

关于php - 关于使用 PHP 的 Facebook session 的基本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045983/

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