gpt4 book ai didi

javascript - 刷新页面时不调用 FB.getLoginStatus(Facebook Javascript SDK)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:21:39 25 4
gpt4 key购买 nike

我正在尝试使用用户的 Javascript SDK 实现一个与用户的 Facebook 个人资料相关联的网页。按照他们的初始文档:

<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({appId: '[my-appid]', status: true, cookie: true, xfbml: true});
//Check if user is logged-in to facebook:
FB.getLoginStatus(function(response) {
if (response.session) {
// Here I use some FB.api functions
// and get some data I need about the user's facebook profile,
// and make same changes to the document html accordingly...
}

});
};

(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());

</script>

FB.getLoginStatus 函数是在 FB.init 之后编写的,正如他们建议的那样。当我第一次加载页面时一切正常。但是,如果我点击刷新 (F5) -那么 FB.getLoginStatus 永远不会被调用!因此没有收集到所需的信息。如果我在 FB.init 之后放置一个“警报”——它会起作用并且我会看到它。如果我在 FB.getLoginStatus 中放置一个“警报”,那么它就不起作用。如果我执行“无缓存刷新”(使用 Ctrl-F5 而不是 F5)- 那么一切正常。

这是为什么呢?我怎样才能让它正常工作?

谢谢。

最佳答案

我在尝试解决这个问题时遇到了同样的问题。 FB.init 是异步的,警报导致足够的延迟来初始化所有内容。 FB.getLoginStatus 很可能被调用,但出错了。您是否在错误控制台中看到任何错误?您可能会看到有关在初始化之前调用 FB.getLoginStatus 的错误。

另一种可能性是您将 xfbml 设置为 true。 Facebook 似乎有时会进行双重初始化,导致您对 init 的调用失败。尝试将 xfbml 设置为 false。如果您需要在页面上呈现 FBML,请呈现特定元素。

FB.XFBML.parse(document.getElementById('idOfElement'));

关于javascript - 刷新页面时不调用 FB.getLoginStatus(Facebook Javascript SDK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500717/

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