Javascript JS SDK初始化并准备好进行API调用时的回调

Javascript JS SDK初始化并准备好进行API调用时的回调,javascript,sdk,facebook-javascript-sdk,Javascript,Sdk,Facebook Javascript Sdk,我正在加载JS SDK async并在FBAsyncint回调中运行FB.init。在运行FB.init之后,我希望尽快进行API调用,但是在FB.init之后进行API调用时,我得到以下OAutheException 对象{type=OAutheException,message=必须使用活动访问令牌来查询有关当前用户的信息。} 如果我将API调用延迟X秒,它就会工作。那么,当SDK准备好进行API调用时,如何获得回调 请参见下面的代码示例。参数authResponse to FB.init由

我正在加载JS SDK async并在FBAsyncint回调中运行FB.init。在运行FB.init之后,我希望尽快进行API调用,但是在FB.init之后进行API调用时,我得到以下OAutheException

对象{type=OAutheException,message=必须使用活动访问令牌来查询有关当前用户的信息。}

如果我将API调用延迟X秒,它就会工作。那么,当SDK准备好进行API调用时,如何获得回调

请参见下面的代码示例。参数authResponse to 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>

如果您在调用FB.init后立即订阅auth.statusChange事件,我相信在您获得会话时会调用它,然后使用FB.api是安全的。在FB.Event.subscribe上查看更多详细信息。

如果在调用FB.init后立即订阅auth.statusChange事件,我相信在您获得会话时会调用它,然后使用FB.api是安全的。在FB.Event.subscribe上查看更多详细信息。

无效。事件发生时,传递给回调函数的响应对象看起来有效,并且有一个有效的oauth_令牌。如果下次我尝试时您的解决方案不起作用,那么我会将其报告为错误。不起作用。事件发生时,传递给回调函数的响应对象看起来有效,并且有一个工作的oauth_令牌。如果下次我尝试时您的解决方案不工作,那么我将报告它为错误。