anshul
anshul

Reputation: 992

Firebase authWithOauthToken is not working

I am developing an app in Android using firebase.I have created the login activity where i have a method that logs user in when they pass the credentials(user creation is already done).Then i will save the token recieved in onAuthenticated callback so that i can log user in automatically next time when he/she opens the app without asking to enter the credentials.

Here is the code

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();
                }
            });
}

And then i check onCreate whether we have token token to log user in

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();
            }
        });
    }
}

But the problem is that i am getting an error while login user with authWithOAuthToken.Please help what i am missing.

This is the error i recieve everytime.

FirebaseError: Invalid authentication credentials provided.

Upvotes: 0

Views: 599

Answers (1)

Xiaoqi Hu
Xiaoqi Hu

Reputation: 61

authWithOAuthToken is used to login with a social provider. For example, user signs in with Google and gets an OAuth token returned from Google. Then app sends this OAuth token to Firebase auth server via authWithOAuthToken. User can log in after server verifies the OAuth token.

In your case, user logged in with email/password. The token you received was a Firebase auth token issued by Firebase auth server not an OAuth token issued by social provider.

Please refer to the doc for details: https://firebase.google.com/support/guides/firebase-android#sign_a_user_in_with_a_social_provider_numbered

Upvotes: 1

Related Questions