why is requestIdToken returning null?
As I have answered at the following question:
Google Sign-In requestIdToken returns null
In order to request Id Token sucessfully, you should use a "Web application" type Client Id, instead of "Android" type Client Id.
You also find at Google's documentation, the following info (please note #3):
Create an OAuth 2.0 client ID for your backend server
If your app authenticates with a backend server or accesses Google APIs from your backend server, you must create an OAuth 2.0 client ID for your server. To create an OAuth 2.0 client ID:
- Open the Credentials page.
- Click Add credentials > OAuth 2.0 client ID.
- Select Web application.
- Click Create.
Pass this client ID to the requestIdToken or requestServerAuthCode method when you create the GoogleSignInOptions object.
Update Mar 26:
Android Developers Blog - Registering OAuth clients for Google Sign-In
In my case i had previously,
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build();
I fixed it by adding adding the requestToken method,
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestIdToken(getString(R.string.default_web_client_id)) .build();
Now its working for me.Hopefully this can help somebody having issues like me.