gpt4 book ai didi

javascript - facebook javascript sdk完全加载后如何运行php代码

转载 作者:行者123 更新时间:2023-11-29 21:36:20 24 4
gpt4 key购买 nike

我正在使用 php sdk 开发一个 facebook 应用程序并尝试从 JavaScript SDK 获取访问 token 。但问题是 javascript SDK 需要时间加载,我的 php 代码在 javascript SDK 完全加载之前运行,这就是为什么我无法获得访问 token 。这是我的代码。

<script>
window.fbAsyncInit = function() {
FB.init({
appId : '{app-id}',
cookie : true,
version : 'v2.4'
});
};

(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));


</script>
<?php
require __DIR__ . '/Facebook/autoload.php';

$fb = new Facebook\Facebook([
'app_id' => '............',
'app_secret' => '..................',
'default_graph_version' => 'v2.4',
]);

if(!isset($_SESSION["AccessToken"])) {

$helper = $fb->getJavaScriptHelper();
try {
$accessToken = $helper->getAccessToken();

if(isset($accessToken)) {
$_SESSION["AccessToken"]= (string)$accessToken;
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'AccessGraph returned an error: ' . $e->getMessage();

session_destroy();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
session_destroy();
exit;
}
}

echo $_SESSION["AccessToken"];

?>

如果我重新加载页面,代码会正常工作,并且我会成功获取访问 token ,因为已经加载了 JavaScript SDK。请告诉我如何解决这个问题?

最佳答案

通常您的 php 文件会被执行,结果会显示在浏览器上。

这意味着您的 php 代码将在您的脚本生成的任何 javascript 甚至交付给浏览器执行之前运行。

如果你真的必须在 js 代码之后运行 php 代码,那么你应该在你的 js 的所有必要库加载之后立即使用 javascript 加载 php 代码。

使用 jquery 可以像这样完成。

<div id="success"></div>
<div id="error"></div>

<script>
$( "#success" ).load( "/my-file.php", function( response, status, xhr ) {
if ( status == "error" ) {
var msg = "Error occured while loading my script: ";
$("#error").html( msg + xhr.status + " " + xhr.statusText );
}
});
</script>

这将加载 my-file.php,在 div#success 中显示它的输出,并在 div#error 中给出错误消息如果出现任何问题。

关于javascript - facebook javascript sdk完全加载后如何运行php代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34759538/

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