如果设备上安装了 Facebook 原生应用程序,登录 Facebook 无法工作?

4

我正在开发一款Android应用。当安装了Facebook原生应用时,它无法正常工作,只显示两个弹出框。但如果没有安装,则会重定向到Facebook网站并正常工作。我该如何解决这个问题?非常感谢您的任何帮助。我已经检查并添加了所有哈希密钥到Facebook应用程序中,但仍然无法正常工作。

    statusCallback = new SessionStatusCallback();
    Session session = Session.getActiveSession();
    this.isLogin = isLoginUser;
    session = null;
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(context, null,                        statusCallback,savedInstanceState);
        }
        if (session == null) {

            session = new Session.Builder(context).setApplicationId(
                    "688998947797106").build();

        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(activity)
                    .setCallback(statusCallback)
                    .setLoginBehavior(
                            SessionLoginBehavior.SSO_WITH_FALLBACK)
                    .setPermissions(Arrays.asList("email")));
        }
    }
    if (!session.isOpened() && !session.isClosed()) {
        session.openForRead(new Session.OpenRequest(activity)
                .setCallback(statusCallback)
                .setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK)
                .setPermissions(Arrays.asList("email")));
    } else {
        Session.openActiveSession(activity, true, statusCallback);
    }

3
你在LogCat中是否遇到了这个异常:com.facebook.http.protocol.ApiException: remote_app_id与存储的id不匹配 - Praveen Sharma
你能给我看一下你的登录代码吗? - NagarjunaReddy
你好,Nagarjuna,我已经添加了代码。 - Nitesh Kabra
3个回答

3
我也遇到了同样的问题,我添加了不同的密钥。请查看我的问题这里
您可以在此讨论中获得更多信息点击这里,请查看Abhishek Agrawal在该链接中给出的答案。
将以下代码添加到您的Activities onCreate中,并检查您的应用向Facebook发送了哪个哈希键:
PackageInfo info;
    try {
        info = getPackageManager().getPackageInfo("com.example.yourpackagename", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md;
            md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String something = new String(Base64.encode(md.digest(), 0));
            //String something = new String(Base64.encodeBytes(md.digest()));
            Log.e("hash key", something);
        }
    } catch (NameNotFoundException e1) {
        Log.e("name not found", e1.toString());
    } catch (NoSuchAlgorithmException e) {
        Log.e("no such an algorithm", e.toString());
    } catch (Exception e) {
        Log.e("exception", e.toString());
    }

请检查我回答中发布的链接。 - Straw Hat

2

首先,按照我在此链接给出的代码检查您的哈希密钥,如果仍然无效,请检查您手机上的Facebook Android 应用是否已更新。如果应用程序没有更新,请更新您的 Facebook 应用程序并尝试发布。


0
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    facebook.authorizeCallback(requestCode, resultCode, data);
}

在调用Facebook登录请求的活动中使用此代码。


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