【问题标题】:Firestore - Facebook Invalid OAuth access token signature code 190Firestore - Facebook 无效的 OAuth 访问令牌签名代码 190
【发布时间】:2019-09-14 10:00:11
【问题描述】:

我正在尝试在我的 android 应用中包含 facebook 登录。但即使我在 firebase 和 facebook 上关注过文档,我仍然无法做到。当我单击登录按钮时,facebook 给了我以下错误:

com.google.firebase.auth.FirebaseAuthInvalidCredentialsException:提供的身份验证凭据格式错误或已过期。 [来自 Facebook 的 debug_token 响应不成功:{"error":{"message":"无效的 OAuth 访问令牌签名。","type":"OAuthException","code":190,"fbtrace_id":"ENYy8qUQd+C"} } ]

我注册了 developers.facebook,将我的 App ID 和 App Secret 执行到 firebase auth 部分。在我包含我的 keyhash 和有效的 oAuth 重定向 URI 后,仍然无法克服这个问题。这是我在 android 中的代码;

在创建时;

    mCallbackManager = CallbackManager.Factory.create();
    loginButton = findViewById(R.id.facebook_login);
    loginButton.setReadPermissions("email");

    loginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            signFb();
        }
    });

在 oncreate 之后,我有了这个 registerCallback 方法。

private void signFb()
{
    loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            handleFacebookAccessToken(loginResult.getAccessToken());
        }

        @Override
        public void onCancel() {
            Log.d("aa", "facebook:onCancel");
            // ...
        }

        @Override
        public void onError(FacebookException error) {
            Log.d("aa", "facebook:onError", error);
            Log.d("ere", error.toString());
        }
    });
}



private void handleFacebookAccessToken(AccessToken token) {
    Log.d("asdfgb", "handleFacebookAccessToken:" + token);

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        FirebaseUser user = mAuth.getCurrentUser();
                        Log.d("esgfsgdvcxz ", "onComplete: ASFDSGBHSF");
                        if(user != null) {
                            Intent intent = new Intent(ActivityLogin.this, MainFragmentActivity.class);
                            startActivity(intent);
                            finish();
                            return;
                        }
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w("asd", "signInWithCredential:failure", task.getException());
                    }

                    // ...
                }
            });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Pass the activity result back to the Facebook SDK
    mCallbackManager.onActivityResult(requestCode, resultCode, data);
}

谢谢。我不认为问题出在代码中。 因为facebook片段出现了,我可以点击继续。但在那之后,我就不能继续了。

【问题讨论】:

    标签: android firebase-authentication facebook-login


    【解决方案1】:

    解决了我的问题。我一直在不停地编码几个小时,并且使用所有这些 chrome 标签,我意识到我在粘贴 App Id 等之后忘记点击 Firebase 身份验证标签上的“保存”。编码的日子很好。

    【讨论】:

      【解决方案2】:

      进入你的firebase并进入firebase auth并启用facebook auth然后去规则并授予阅读和Wright的权限

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-22
        • 2015-10-05
        • 1970-01-01
        • 2018-09-24
        • 2020-08-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        相关资源
        最近更新 更多