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

标签 javascript sdk facebook-javascript-sdk

我正在异步加载 JS SDK 并在 fbAsyncInit 回调中运行 FB.init。 FB.init 运行后,我想尽快进行 API 调用,但是在 FB.init 之后进行 API 调用时,我得到以下 OAuthException

Object { type="OAuthException", message="An active access token must be used to query information about the current user."}

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

请参阅下面的代码示例。 FB.init 的参数“authResponse”由 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 事件,我相信它会在您获得 session 时被调用,然后可以安全地使用 FB.apiSee the docsFB.Event.subscribe 上获取更多详细信息。

关于javascript - 当 JS SDK 初始化并准备好进行 API 调用时的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7258136/

相关文章:

javascript - 在 JavaScript 中制作 PdfMake

windows-mobile - 我可以使用 Windows Mobile 6 SDK 开发 Windows Mobile 5 应用程序吗

api - 访问 Flixster 数据

facebook - 使用 window.fbAsyncInit 在页面的第一次加载时不起作用

javascript - 当 javascript 失败时提醒 Javascript 错误?

javascript - 应用某些 css 样式后,fileupload click 事件未正确触发(在 IE 8 上)

javascript - 可观察的自定义映射函数

android - 我需要创建一个带有网络链接的 Android APK

javascript - 我无法使用 Graph Api 创建事件

javascript - 我如何获取来自 Facebook 的通知?