Android 登录错误:将您登录到此应用程序时出错。请稍后再试

Android 登录错误:将您登录到此应用程序时出错。请稍后再试,android,facebook,facebook-graph-api,facebook-login,Android,Facebook,Facebook Graph Api,Facebook Login,我得到了这个错误。当我尝试使用facebook登录到我的应用程序时。 当我第一次验证时,它将正常工作。在我取消安装我的应用程序并尝试登录Facebook之后,我发现了这个错误 另一个问题:在设备1中进行身份验证并尝试在设备2上使用facebook登录后,也会出现相同的错误 我找到的解决方案:当我从Facebook应用程序设置中删除应用程序身份验证时,它在上述场景中工作,但这不是一个好的解决方案,我们如何告诉用户执行此操作 btnFbLogin.setOnClickListener(new Vie

我得到了这个错误。当我尝试使用facebook登录到我的应用程序时。 当我第一次验证时,它将正常工作。在我取消安装我的应用程序并尝试登录Facebook之后,我发现了这个错误

另一个问题:在设备1中进行身份验证并尝试在设备2上使用facebook登录后,也会出现相同的错误

我找到的解决方案:当我从Facebook应用程序设置中删除应用程序身份验证时,它在上述场景中工作,但这不是一个好的解决方案,我们如何告诉用户执行此操作

btnFbLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(accessToken != null) {
                    boolean expires = accessToken.isExpired();
                    if(!expires) {
                        performFbLoginOrSignUp(accessToken);
                    }
                } else {
                    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
                    callbackManager = CallbackManager.Factory.create();

                    if (loginButton != null) {
                        loginButton.setReadPermissions("public_profile", "email", "user_friends");

                        if (CommonUtil.isConnectingToInternet(LoginActivity.this)) {
                            loginButton.performClick();

                            loginButton.setPressed(true);

                            loginButton.invalidate();

                            loginButton.registerCallback(callbackManager, mCallBack);

                            loginButton.setPressed(false);

                            loginButton.invalidate();
                        } 
                    }
                }
            }
        });

在Facebook示例中,也有一个问题:

复制步骤

  • 使用Facebook身份验证FB配置文件启动应用程序登录

  • 卸载应用程序并重新安装

  • 现在尝试登录Facebook

  • 将出现上述错误。因为我们已经通过身份验证,所以需要访问fb配置文件。但在这里,我们面临着这个问题
  • 此处未显示已验证的页面
  • 我正在使用带有小米Redmi Note 3的本机FB应用程序

  • 出现此问题的原因是,您已经通过Facebook对应用程序进行了身份验证,并且您的代码可能在每次使用Facebook时都包含Authenticate(查找并删除)

    遵循以下步骤:

  • 转到Facebook设置

  • 删除你的应用程序

  • 确保您已在Facebook开发者页面中添加Facebook登录,并且已启用客户端OAuth登录

  • 转到代码并重写回调方法:

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            Intent secondActivityIntent = new Intent(this, RedirectActivity.class);
            startActivity(secondActivityIntent);
        }
    }
    
  • 在Oncreate方法中,调用AccessToken:

    accessTokenTracker = new AccessTokenTracker() {
        @Override
        protected void onCurrentAccessTokenChanged(
                AccessToken oldAccessToken,
                AccessToken currentAccessToken) {
            // Set the access token using
            // currentAccessToken when it's loaded or set.
        }
    };
    
    // If the access token is available already assign it.
    accessToken = AccessToken.getCurrentAccessToken();
    
    if (accessToken != null && !accessToken.isExpired())
    {
        GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject object, GraphResponse response) {
                if(null != object) {
                    try
                    {
                        Intent i = new Intent(MainActivity.this, Feedback.class);
                        startActivity(i);
                        String email = object.getString("email");
                        String birthday = object.getString("birthday");
    
                    }
                    catch (Exception ex)
                    {
                        Toast.makeText(MainActivity.this, ex.toString(), Toast.LENGTH_SHORT).show();
                    }
                } else {
                    // call your authentication process
    
                }
            }
        });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,birthday,link");
        request.setParameters(parameters);
        request.executeAsync();
    }
    

  • 我也面临这个问题。在Facebook上更新你的密钥哈希

  • 从Facebook(帐户)的用户设置中删除应用程序

  • 卸载应用程序

  • 使用发行版或新调试密钥库获取新哈希。使用此命令:

    keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
    
    keytool-exportcert-alias-keystore | openssl sha1-binary | openssl base64
    
  • 在Facebook仪表板上添加新哈希


  • 我的Redmi Note 3也有同样的问题。在三星上测试。没问题。不知道它是否是针对Redmi的。

    我也面临同样的问题。我的keyhash定义得很完美,但仍然面临同样的问题。即使是第一次,我也无法登录

    我的问题的解决方案是:

  • 转到应用程序的仪表板

  • 在左侧窗格的“产品”选项卡下,确保已添加Facebook登录。如果没有,请添加到那里


  • 如果所有其他配置都已就位。这是Facebook发布的问题。Facebook团队确认


    我们将期望解决方案:在3天内

    我的问题实际上是哈希键,它无效

    我也有同样的问题,很难诊断。原因是Facebook在第一次登录时没有检查哈希键,看起来这个键是正确的,但事实并非如此。其次,错误信息只是一种白痴。第三个是决议:试试下面的链接,它帮助了我

    我指的是

    或者只需在onCreate()方法中添加以下代码,该方法将返回密钥散列

     // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {
    
    } catch (NoSuchAlgorithmException e) {
    
    }
    
    添加上面的代码来检索密钥,即您可以存储的密钥

    在这里。现在它可以工作了

    这对我有用,希望对你也有用

    此命令可能不会为您提供最新的keyhash

    keytool-exportcert-alias YOUR_RELEASE_KEY_alias-keystore YOUR_RELEASE_KEY_PATH | openssl sha1-binary | openssl base64


    要从android studio搜索中获取最新或活动的密钥哈希,请在应用程序运行并抛出上述错误时,在android studio的Logcat或android监视器中搜索“哈希”。您将获得不同的处于活动状态的keyhash。在控制台设置中粘贴此已搜索的keyhash后,您可以登录到您的应用程序。

    对于我来说,此错误是由于无效的权限字符串造成的。发生在iOS和Android上。

    我也面临同样的问题

    这对我来说是个错误

    keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
    
    keytool-exportcert-alias-keystore | openssl sha1-binary | openssl base64
    

    键入此命令时,它会提示
    输入密钥库密码:
    。我给的是
    keyPassword
    而不是
    storePassword
    ,它没有给出任何错误消息,而是生成了一个不同的散列

    由于哈希键无效而发生错误

    我们可以使用下面的命令创建散列键,并在设置->基本->Android散列键下更新相同的内容

    keytool -exportcert -alias ADD_RELEASE_KEY_ALIASE_HERE -keystore ADD_UR_KEYSTORE_PATH_HERE | openssl sha1 -binary | openssl base64
    
    如果需要,可以使用以下命令找到密钥库的Relase Key别名:

    keytool -list -keystore ADD_UR_KEYSTORE_PATH_HERE
    
    我也遇到过一个问题,比如使用上面的HashKey,如果我直接将release APK安装到设备上,登录工作正常,但是当我将APK上传到Play Store并从Store安装应用程序时,它会显示相同的登录失败错误。此问题的修复方法如下所示:

  • 转到发布管理

  • 选择发布管理→ 应用程序签名

  • 您可以看到十六进制格式的SHA1密钥应用程序签名证书

  • 复制十六进制格式的SHA1,并将其转换为base64格式,您可以使用此选项,而不需要十六进制的SHA1:部分

  • 转到Facebook开发者控制台,并在中添加密钥(转换为base 64后)

    背景→ 基本的→ 密钥散列


  • 我也遇到了同样的问题,我发现我在facebook开发者控制台中生成的哈希键不合适。我试图从不同的电脑生成散列密钥,但它要求我输入特定密钥库的密码,而我的电脑中没有这种情况。因此,请确保在创建散列密钥时,您将被要求输入密钥存储密码,然后将该散列密钥插入facebook开发者控制台

    命令
    keytool -exportcert -alias TYPE ALIAS HERE -keystore KEY_STORE_FILE_PATH_HERE | openssl sha1 -binary | openssl base64
    
    node -e 'console.log(Buffer.from(process.argv[1].split(":").map(hex => parseInt(hex, 16))).toString("base64"))' '5E:8F:16:06:2E:A3:CD:2C:4A:0D:54:78:76:BA:A6:F3:8C:AB:F6:25'
    
    > btoa('a1:43:d4:27:c8:04:rr:fr:2g:3b:tg:b5:et:c1:4a:1t:fr:f5:54:5f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
    < "g5fGIBgB6noFO9ur78BdEr73KG6="