113
votes

I am usign gplus sign in, and getting this error at time I am in onActivityResult....

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

    if (requestCode == 0) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {

            GoogleSignInAccount acct = result.getSignInAccount();
//                Log.d("Result","details"+ acct.getDisplayName() + acct.getEmail());

            mEmail = acct.getEmail();
            String mFullName = acct.getDisplayName();
            String mGoogleplusId = acct.getId();


            SocialUser user = new SocialUser();
            user.setType("googleplus");

            user.setEmail(mEmail);
            user.setFullname(mFullName);
            user.setId(mGoogleplusId + "");
            loginParams.put("email_id", mEmail);
            loginParams.put("googlePlusId", mGoogleplusId);
            loginParams.put("full_name", mFullName);
            loginParams.put("registrationType", "googleplus");
            SignUpService(user);


        } else {
            Toast.makeText(CustomerLogIn.this, "Unable to fetch data, Proceed manually", Toast.LENGTH_SHORT).show();
        }
    }
}

And I am calling for gplus login on button click. On clcking button following code is executed....

 GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(CustomerLogIn.this)

            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();


    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, 0);

And I am geetng this error...

Status{statusCode=DEVELOPER_ERROR, resolution=null}

on this line....

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

Please suggest the solution.

22
The application is misconfigured. Check google api configuration.1'hafs
Yes but I am not able to find out whats wrong.Gurvinder Singh
I don't use firebase. See my solution here: stackoverflow.com/a/46828895/1160216Mike Miller
you have to add your web client id. not android client Id.Miguel Silva

22 Answers

229
votes

You need to add your SHA1 key to firebase console configuration. You can do it in this way:

Firebase console ( https://console.firebase.google.com ) -> your project -> configuration -> scroll to

enter image description here

You can find your SHA1 key running "Signing report" from Android Studio:

enter image description here

Then, look the "run tab" and click the button:

enter image description here

I think it's the easier way. Hope this help.

32
votes

Probably you created the configuration file using the SHA1 of your production token, use the androiddebugkey alias to gather the SHA1 corresponding to the debug version of your app and copy the configuration file to the 'app' directory, you should have both configuration files (one for debug purposes and another for production environment).

Based on the walkthrough published in https://developers.google.com/identity/sign-in/android/start

14
votes

enter image description here

The way I fixed it was by picking up the key corresponding to the highlighted text. Due to the confusing usage of the word 'server' in Firebase's documentation page I was picking up the Server key . Which was the reason for the problem.

You can find the key here.

12
votes

I had the same issue and I got it working by doing these steps:

1.Add DEBUG_KEYSTORE SHA1 fingerprint to the firebase project. use the following command(MAC/LINUX)

  keytool -exportcert -list -v \-alias androiddebugkey -keystore ~/.android/debug.keystore  

2.Now Generate a signed apk of your project. The process includes generating a keystore for your app's release version.

  Copy the path of the newly generated .jks file.

3.Now generate RELEASE_KEYSTORE SHA1 fingerprint using the following command

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

4.Copy the new SHA1 from the output and add it as another SHA1 fingerprint in your firebase application console.

Now you are good to go! ---- Hope! it helps.

5
votes

I was having the same problem, how I solved it is that I had different applicationId in my gradle file than the package name in my manifest file. And I used to applicationId to create the json file. I had to change my package name to what my applicationId was and that fixed it for me.

4
votes

You might have generated and added wrong SHA1 key. Use following steps to generate SHA1 key in Android studio:

  1. Click on Gradle (From Right Side Panel, you will see Gradle Bar)
  2. Click on Refresh (Click on Refresh from Gradle Bar, you will see List Gradle scripts of your Project)
  3. Click on Your Project (Your Project Name form List (root))
  4. Click on Tasks
  5. Click on Android
  6. Double Click on signingReport (You will get SHA1 and MD5 in Run Bar(Sometimes it will be in Gradle Console))

Now add this SHA1 key in your firebase android project.

3
votes

Alternatively to the answers provided here, you can use Android Studio's Firebase Assistant to automatically add your SHA-1 to your project with the click of some buttons.

In Android Studio, go to Tools > Firebase > Select 'Authentication' and click the link that says 'Email and password authentication'.

This will bring you a little tutorial on how to integrate Authentication to your project, but since you've probably done all that, just click 'Connect to Firebase' and you're done.

3
votes

It's an old question, but I have been stuck with error 10 (DEVELOPER_ERROR) lately, because I was using the Android client ID, I created in the google developer console.

The solution for me was to use the Android credentials in google developer console only to indicate the SHA key of my apk and to use the client ID of the Web application (!) credentials from the google developer console in my cordova application.

config.xml:

<plugin name="cordova-plugin-googleplus" spec="^5.3.0">
    <variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.[web-application-client-id]" />
    <variable name="WEB_APPLICATION_CLIENT_ID" value="[web-application-client-id].apps.googleusercontent.com" />
</plugin>

code:

window.plugins.googleplus.login(
    {
       'webClientId': '[web-application-client-id].apps.googleusercontent.com'
    }, 
    ...

I don't use firebase.

3
votes

Please Put correct json file in root of the android project
For more Refer here: https://coderzpassion.com/android-working-latest-google-plus-login-api/

1
votes

The error is caused because the SHA-1 checksum of the debug or release key is not included in the firebase/google console.

First generate key using following command:

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

Then copy the SHA-1 checksum and go to:

Firebase Console > Your project > Settings of the app > Add Fingerprint

1
votes

For me it was working when I first implemented it, but stopped after a few days of development, with the mentioned error message.

I've solved the issue with these steps:

  1. I have added the sha-256 fingerprint on top of the sha-1 fingerprint that I already had in the firebase console. (Not sure if this step is required)
  2. I have downloaded google-services.json file again and replaced the old file.
  3. re-installed the app

and it worked

0
votes

I came across this error in my firebase app. It was fixed when I added therequestIdToken(activity.getString(R.string.default_web_client_id)) part below.

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail().requestIdToken(activity.getString(R.string.default_web_client_id))
        .build();

    apiClient = new GoogleApiClient.Builder(activity)
        .addConnectionCallbacks(this)
        .enableAutoManage(activity, this)
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
        .build();

    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(apiClient);
    activity.startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN);
0
votes

I got this error when i updated my json config file with a new google account.

Uninstalling the application manually and reinstalling the app worked for me.

0
votes

For anyone releasing an app, you need a special fingerprint from your keystore file. No wonder why I was getting this error just for the release version. How to obtain Signing certificate fingerprint (SHA1) for OAuth 2.0 on Android?

0
votes

Ensure you enable Google Sign-In in under Authentication in the Firebase console.

0
votes

I solved my problem by use right server_client_id in this line :

String serverClientId = getString(R.string.server_client_id);

I used the wrong code.

0
votes

Some Services like google login require SHA1 fingerprint to be added to your firebase console.

I missed adding SHA fingerprint in firebase console. You can do so by going in FireBase Console > project setting > Add fingerprint option.

You can generate SHA1 Fingerprint by a very easy way https://www.youtube.com/watch?v=FczARQ244GE

After that I was doing one more mistake

After generationg SHA1 key fom above method. I copied the wrong invalid SHA1 key which was an expired one. So make sure the SHA1 key that you are copying from above way output is a valid one (Check the valid untill value as well of SHA1 Key)

Also make sure that the package name(x.y.z) that you have added in firebase is same as used in your android code.

Also make sure to use correct AppID

0
votes

After long invistigation I have found a solution. Actually this error Error: Status{statusCode=DEVELOPER_ERROR, resolution=null} points to incorrect SHA-1 OR Incorrect package name OR something else?. In my case, I add debug keyword to end of my package name com.sample.app => com.sample.app.debug

0
votes

I struggled with this issue because I made a copy of my application with changing the package name. I add a new project for it at Firebase. My mistake was that I forgot to change the server's client ID to the one in the new Firebase project.

more details under authintication with Firebase sectoin here

0
votes

When you let Google manage your app signing, you can find the SHA-1 key in the Google Play console. On the sidebar menu look for 'Configuration -> App integrity'. Here you will find the SHA-1 key for the signed app.

You also see the SHA-1 key for the signed app you've uploaded to the store.

0
votes

don't forget to add release finger print. the former answers tell just add debug finger print which your problem just solve when you run your app in debug mode. if you release your app you can see that your problem is still remain . then make sure you added release finger print too .

0
votes

If you're running into this issue with a released version (production):

Go to the Google Play console and copy SHA-1 key from Release -> Setup -> App Integrity