从我的应用程序登录 Facebook 在模拟器上可以正常运行,但在设备上无法登录。

7
这是我登录 Facebook 的代码。
mLoginButton = (LoginButton) findViewById(R.id.login);

        // restore session if one exists
        SessionStore.restore(Utility.mFacebook, this);
        SessionEvents.addAuthListener(new FbAPIsAuthListener());
        SessionEvents.addLogoutListener(new FbAPIsLogoutListener());

        /*
         * Source Tag: login_tag
         */
        mLoginButton.init(this, AUTHORIZE_ACTIVITY_RESULT_CODE, Utility.mFacebook, permissions);

        if (Utility.mFacebook.isSessionValid()) {
            requestUserData();
        }
 public class FbAPIsAuthListener implements AuthListener {

        //@Override
        public void onAuthSucceed() {
            requestUserData();
        }

        //@Override
        public void onAuthFail(String error) {
            mText.setText("Login Failed: " + error);
        }
    }

    /*
     * The Callback for notifying the application when log out starts and
     * finishes.
     */
    public class FbAPIsLogoutListener implements LogoutListener {
        //@Override
        public void onLogoutBegin() {
            mText.setText("Logging out...");
        }

        ///@Override
        public void onLogoutFinish() {
            mText.setText("You have logged out! ");
            mUserPic.setImageBitmap(null);
        }
    }

在模拟器上它运行得很完美。我已经在三个已经安装了Facebook的设备上尝试过,这里出现了问题。加载时它只是一直转圈,什么也不做。我再次看到登录按钮。然后我尝试从原始的Facebook应用程序注销,并且当我按下我的应用程序上的登录按钮时,我看到的是登录窗口,但现在是我在模拟器上登录时所看到的窗口,而是原始Facebook应用程序的登录窗口。就像启动了这个应用程序一样。我正在使用的代码取自hackbook.java。

你在模拟器上是否安装了像设备一样的Facebook应用程序?此外,目前Android SDK存在问题,如平台状态中所述。您还可以尝试运行网络嗅探器以检查响应。 - Nitzan Tomer
不,它没有安装在模拟器中。 - qwerty_gr
2个回答

5
平台状态显示SSO存在问题。
只有在Android设备上安装了Facebook应用程序时,SSO才能正常工作,您描述的情况正好符合这一点。在模拟器上,您没有Facebook应用程序,因此当您的应用程序尝试登录用户时,它使用SDK中的对话框而不是使用fb应用程序附带的SSO过程。
然而,在设备上,您说您确实有fb应用程序,因此SSO启动了,但目前存在问题。尝试卸载设备上的Facebook应用程序或者取消SSO,即:如何禁用Android的Facebook单点登录-Facebook-android-sdk

如果我卸载它,它可以运行,但问题在于正常用户显然不会卸载原始的 Facebook 应用程序来安装我的应用程序。 - qwerty_gr
显然,我只是建议您确认您遇到的问题是否与Facebook在SSO方面遇到的问题有关。现在我们知道这是您所遇到的问题,您只能等待他们解决问题。与其他API合作存在风险。 - Nitzan Tomer
有没有针对这个问题的特定解决方案或修复方法? - Nitesh Verma

0

您需要生成系统的哈希密钥,并通过编辑现有的 Facebook 应用程序来放置它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接