FB.login()phonegap facebook插件出错

时间:2013-04-04 21:04:29

标签: ios facebook cordova sencha-touch facebook-javascript-sdk

当我使用在Settings / facebook中设置的帐户在ios 6设备中运行fb.login()时,我得到以下内容

operation couldn't be completed (com.facebook.sdk error 2)
在ios 5中,该应用程序运行正常,问题是本机登录

请帮忙!这是我的代码

这是facebook init

   this.appId = appId;
    var me = this;

    document.addEventListener('deviceready', function() {
                                  try {

                                  FB.init({ appId: "294003447379425", status: true, cookie: true, nativeInterface: CDV.FB, useCachedDialogs: false });

                                  } catch (e) {
                                  console.log(e);
                                  }
                                  }, false);


    if (!this.appId) {
        Ext.Logger.error('No Facebook Application ID set.');
        return;
    }



    var me = this;
    me.hasCheckedStatus = false;


    FB.Event.subscribe('auth.logout', function() {
        // This event can be fired as soon as the page loads which may cause undesired behaviour, so we wait
        // until after we've specifically checked the login status.
        if (me.hasCheckedStatus) {
            me.fireEvent('logout');
        }
    });

    // Get the user login status from Facebook.
    FB.getLoginStatus(function(response) {

        me.fireEvent('loginStatus');

        clearTimeout(me.fbLoginTimeout);
        me.hasCheckedStatus = true;

        if (response.status == 'connected') {
            me.fireEvent('connected');


        Ext.Viewport.add(Ext.create('CinePass.view.Main'));


        } else {
            me.fireEvent('unauthorized');
            console.log('noconectado');

            Ext.Viewport.add(Ext.create('CinePass.view.LoggedOut'));
        }
    });

    // We set a timeout in case there is no response from the Facebook `init` method. This often happens if the
    // Facebook application is incorrectly configured (for example if the browser URL does not match the one
    // configured on the Facebook app.)
    me.fbLoginTimeout = setTimeout(function() {
        me.fireEvent('loginStatus');
        me.fireEvent('exception', {
            type: 'timeout',
            msg: 'The request to Facebook timed out.'
        });
        Ext.Msg.alert('CinePass', 'Existe un problema con Facebook, se iniciará la aplicación sin conexión a Facebook.', Ext.emptyFn);
         Ext.Viewport.add(Ext.create('CinePass.view.Main'));
    }, me.fbTimeout);

这是登录

            FB.login(
                     function(response) {
                     if (response.session) {
                      alert(response.session);

                     } else {
                  alert(response.session);
                     }
                     },
                     { scope: "email,user_about_me,user_activities,user_birthday,user_hometown,user_interests,user_likes,user_location,friends_interests" }
                     );

1 个答案:

答案 0 :(得分:2)

遇到同样的问题并花了几天时间来解决这个问题,原因有很多:

1)第一次启动应用时,如果您拒绝“您是否允许此应用使用您的Facebook权限”,您将收到此错误,您需要做的是,转到设置>一般> Facebook>打开你的应用程序或转到设置>一般>重置>重置位置&隐私(这将重置并向您询问所有应用程序的“您是否允许此应用程序使用您的Facebook权限”。

2)慢/无互联网可能导致错误

3)再次创建你的证书,然后转到build.phonegap.com,为IOS创建一个新密钥并更改IOS密钥(这对我有用,我不知道它是如何工作的但它确实如此,我注意到了使用新的IOS密钥后,重要的应用程序文件大小增加)

4)如果您的应用处于沙盒模式,并且您的IO​​S当前Facebook帐户不是应用测试人员,您也会收到错误。我只是禁用沙盒模式并且它可以工作,确保您的Facebook应用设置具有正确的捆绑ID,如果您的应用仍在开发中,请将0添加到应用商店ID。