Firebase authWithOauthToken 不工作

Firebase authWithOauthToken is not working

我正在 Android 中使用 firebase.I 开发一个应用程序已经创建了登录 activity 我有一个方法可以在用户通过凭据时登录(用户创建已经完成完成)。然后我将保存在 onAuthenticated 回调中收到的令牌,以便下次 he/she 打开应用程序时我可以自动登录用户而不要求输入凭据。

这是代码

private void loginWithPassword(final String email, String password) {
    progressDialog.show();
    FirebaseConnections.getConnection().authWithPassword(email, password,
            new Firebase.AuthResultHandler() {
                @Override
                public void onAuthenticated(AuthData authData) {
                    // Authentication just completed successfully :)
                    IGStorePreference.getInstance().saveString(Constants.TOKEN, authData.getToken());
                    IGStorePreference.getInstance().saveString(Constants.UID, authData.getUid());
                    IGStorePreference.getInstance().saveString(Constants.PROVIDER, authData.getProvider());
                    dismissProgressDialog();
                }

                @Override
                public void onAuthenticationError(FirebaseError error) {
                    // Something went wrong :(
                    dismissProgressDialog();
                    Snackbar.make(parentView, error.getMessage(), Snackbar.LENGTH_LONG).show();
                }
            });
}

然后我检查 onCreate 我们是否有 token token 来登录用户

private void checkIfTokenExistAndLogin() {
    if (IGStorePreference.getInstance().isPrefExists(Constants.TOKEN)) {
        progressDialog.show();
        String provider = IGStorePreference.getInstance().getString(Constants.PROVIDER);
        String token = IGStorePreference.getInstance().getString(Constants.TOKEN);
        FirebaseConnections.getConnection().authWithOAuthToken(provider, token, new Firebase.AuthResultHandler() {
            @Override
            public void onAuthenticated(AuthData authData) {
                IGStorePreference.getInstance().saveString(Constants.TOKEN, authData.getToken());
                IGStorePreference.getInstance().saveString(Constants.UID, authData.getUid());
                IGStorePreference.getInstance().saveString(Constants.PROVIDER, authData.getProvider());
                dismissProgressDialog();
            }

            @Override
            public void onAuthenticationError(FirebaseError firebaseError) {
                dismissProgressDialog();
                Snackbar.make(parentView, firebaseError.getMessage(), Snackbar.LENGTH_LONG).show();
            }
        });
    }
}

但问题是我在使用 authWithOAuthToken.Please 登录用户时遇到错误,帮助解决我所缺少的问题。

这是我每次收到的错误。

FirebaseError: Invalid authentication credentials provided.

authWithOAuthToken 用于通过社交提供商登录。例如,用户使用 Google 登录并获取从 Google 返回的 OAuth 令牌。然后应用程序通过 authWithOAuthToken 将此 OAuth 令牌发送到 Firebase 身份验证服务器。用户可以在服务器验证 OAuth 令牌后登录。

在您的例子中,用户使用 email/password 登录。您收到的令牌是 Firebase 身份验证服务器颁发的 Firebase 身份验证令牌,而不是社交提供商颁发的 OAuth 令牌。

详情请参考文档:https://firebase.google.com/support/guides/firebase-android#sign_a_user_in_with_a_social_provider_numbered