Firebase authWithOauthToken无效

时间:2016-06-15 13:42:17

标签: android firebase firebase-realtime-database firebase-authentication

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

这是代码

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我们是否有令牌令牌来记录用户

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登录用户时遇到错误。请帮助我错过。

这是我每次都收到的错误。

  

FirebaseError:提供的身份验证凭据无效。

1 个答案:

答案 0 :(得分:1)

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

在您的情况下,用户使用电子邮件/密码登录。您收到的令牌是Firebase身份验证服务器颁发的Firebase身份验证令牌,而不是社交提供商发布的OAuth令牌。

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