Я загружаю JS SDK async и запускаю FB.init внутри обратного вызова fbAsyncInit.После запуска FB.init я хочу сделать вызов API как можно скорее, но при выполнении вызова API сразу после FB.init я получаю следующее OAuthException
Object {type = "OAuthException", message = "Активный токен доступа должен использоваться для запроса информации о текущем пользователе."}
Если я задерживаю вызов API на X секунд, он работает.Итак, как мне получить обратный вызов, когда SDK готов к вызовам API?
См. Пример кода ниже.Аргумент «authResponse» для FB.init генерируется PHP SDK (getSignedRequest ()).
<!DOCTYPE html>
<html>
<button onclick="getMe();">Get me</button>
<script>
function getMe() {
FB.api('/me', function(response) {
console.log(response);
});
}
</script>
<div id="fb-root"></div>
<script style="text/javascript">
window.fbAsyncInit = function() {
console.log("fbAsyncInit called");
FB.init({appId: "XXX", status: true, cookie: false, authResponse: {"algorithm":"HMAC-SHA256","expires":1314802800,"issued_at":1314798072,"oauth_token":"XXX","user":{"country":"se","locale":"en_US","age":{"min":21}},"user_id":"XXX"}, oauth: true, xfbml: true});
FB.api("/me", function(response) {console.log(response);});
};
(function() {
var e = document.createElement("script"); e.async = true;
e.src = document.location.protocol + "//connect.facebook.net/en_GB/all.js";
document.getElementById("fb-root").appendChild(e);
}());
</script>
</body>
</html>