android - 未安装应用程序的 Facebook 登录重定向到登录页面

标签 android facebook facebook-login

Android 上,我按照 Session 登录示例为我正在开发的应用程序创建了登录流程。如果当用户通过 WebDialog 通过 Facebook 登录时未安装 Facebook 应用程序,我遇到的问题是在一些设备上,然后页面似乎重定向回登录页面。

我正在使用 Facebook sdk 3.0.1,我还升级到 3.5 以查看是否可以解决我的问题,但没有。 3.0.1 sdk 中提供的示例甚至无法正常工作,而 3.5 sdk 中包含的示例与我的应用程序完全一样。

我已经在其他没有安装 Facebook 应用程序的设备上尝试了下面的这段代码,它们工作得很好。但是当我在我的 Nexus 7(安装了 4.3)上尝试这个时,我遇到了上述问题。

有什么想法吗?

private Session.StatusCallback statusCallback = new SessionStatusCallback();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);

    Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);

    Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(this, null, statusCallback, savedInstanceState);
        }
        if (session == null) {
            session = new Session(this);
        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
        }
    }
}

@Override
public void onStart() {
    super.onStart();
    Session.getActiveSession().addCallback(statusCallback);
}

@Override
public void onStop() {
    super.onStop();
    Session.getActiveSession().removeCallback(statusCallback);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    Session session = Session.getActiveSession();
    Session.saveSession(session, outState);
}

private void Login() {
    Session session = Session.getActiveSession();
    if (!session.isOpened() && !session.isClosed()) {
        session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
    } else {
        Session.openActiveSession(this, true, statusCallback);
    }
}

private void Logout() {
    Session session = Session.getActiveSession();
    if (!session.isClosed()) {
        session.closeAndClearTokenInformation();
    }
}

private class SessionStatusCallback implements Session.StatusCallback {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
    //check session and see if we are logged in.
    }
}

编辑:对此的更新。我已经在型号为 SGH-I337 的三星 Galaxy S4(运行 4.2.2)上尝试过相同的示例/应用程序,但它也无法在此设备上运行。它做了一些不同的事情,如果您在 Facebook 上批准了该应用程序,它会让您点击确定,或者它会让您完成 Action 以允许该应用程序通过 Facebook,但它会显示一个页面说 “错误未登录:您尚未登录。请登录并重试。”

编辑 2:为了验证这不是我们应用程序独有的,我们安装了 Candy Crush 并遇到了同样的错误。

最佳答案

这可能只是 Facebook 的错误,向他们发送错误报告并指定您测试的设备和应用程序及其各自的结果。 这是 Facebook 网站上报告的完全相同的错误:https://developers.facebook.com/bugs/160597354148944

Facebook 回复说“没有足够的证据,我们正在关闭它”,但如果您发布更多证据,他们可能会重新打开并解决此问题。

关于android - 未安装应用程序的 Facebook 登录重定向到登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18985324/

相关文章:

Android翻转图片动画

amazon-web-services - 本地主机上 Cognito 托管 UI 的 Facebook 登录设置

facebook - 如何将 2 "Site URL"(带 www 和不带 www)添加到 Facebook App

Swift 5 - Facebook 登录 : LoginManager() callback doesn't call with Facebook App installed

android - 使用Android获取Firebase实时数据库中最后一个节点的数组元素

android - 使用 ADB 或 Appium,以编程方式从 Android 设置中删除链接的帐户

android - 流式在线音频 - 仅播放第一个音频

Android多用户登录Facebook api 3

facebook - 为什么我的 Facebook 个人资料无法从外部(注销时)看到?

带有 data-href 使用 anchor 问题的 Facebook 评论框