首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Facebook不一致行为

Facebook不一致行为
EN

Stack Overflow用户
提问于 2018-08-12 15:35:08
回答 1查看 79关注 0票数 0

我正在将facebook登录添加到我的应用程序中,但是我遇到了SDK方法中的一个问题,我已经创建了我自己的SDK包装,并公开了一些主要的方法。

代码语言:javascript
运行
复制
/*eslint-disable no-undef*/

class FacebookSDK{
    constructor(options = {}){
        this.options = options;
    }

    isSdkLoaded(){
        return typeof FB !== 'undefined';
    }

    init(){
        window.fbAsyncInit = () => {
            FB.init(this.options);
        }

        (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 = "https://connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));

        return new Promise(resolve => {
            const checkIfSdkIsLoaded = () => {
                this.isSdkLoaded() ? resolve() : setTimeout(checkIfSdkIsLoaded, 100);
            }

            checkIfSdkIsLoaded();
        });
    }

    login(){
        return new Promise((resolve, reject) => {
            FB.login(function(response) {
                if (response.authResponse) {
                    FB.api('/me', function(user) {
                        resolve(user);
                    });
                } else {
                    reject(response);
                }
            });
        });
    }

    getLoginStatus(){
        return new Promise((resolve, reject) => {
            FB.getLoginStatus(function(response) {
                console.log(response);
                if (response.authResponse) {
                    FB.api('/me', function(user) {
                        resolve(user);
                    });
                } else {
                    reject(response);
                }
            });
        });
    }
}

export default FacebookSDK;

但是,当调用getLoginStatus时,我的代码会挂起,因为回调并不总是被调用。有时叫,有时不叫..。

我正在http://localhost/下在本地机器上进行开发

我将localhost添加到我的“应用程序域”部分,并将http://localhost/添加到站点URL中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-12 17:07:26

我不知道我的其中一个建议是什么问题,但我要把它变成一个答案:

  • 也许ghostery或其他浏览器插件阻塞了Facebook
  • FB.getLoginStatus只应在fbAsyncInit中使用,仅次于FB.init
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51810300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档