我正在開發一個使用php sdk的facebook應用程序,並嘗試從JavaScript SDK獲取訪問令牌。但問題是JavaScript SDK需要時間加載和我的PHP代碼運行在JavaScript SDK完全加載之前,這就是爲什麼我無法獲得訪問令牌。 這是我的代碼。如何在facebook之後運行php代碼javascript sdk完全加載
<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"];
?>
如果我的代碼正常工作重新加載頁面,我順利拿到了訪問令牌,因爲JavaScript SDK已經加載。 請告訴我如何解決這個問題?
您正在使用哪種「登錄」方法? JS或PHP?你爲什麼混合東西? – Rayon