7

My project works fine for last six month and app in play store. For an update, I reopen the project shows default_web_client not resolved for the following piece of code.

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

I try the following methods,

1.Clean and rebuild

2.Clear cache and restart

3.Set getString(R.string.default_web_client_id) as empty string and run the project to generate

app/build/generated/res/google-services/{build_type}/values/values.xml

file as instruction from this link

4.Replace empty string with getString(R.string.default_web_client_id)

Now I able to run the project and also able to take release build. But still, Cannot resolve symbol default_web_client_id.

Any update would be helpful...

NB: Directly adding oauth_client->client_id will get an Error

W/GoogleActivity: Google sign in failed
    com.google.android.gms.common.api.ApiException: 12500: 
        at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source) 
Subin Babu
  • 1,515
  • 2
  • 24
  • 50

9 Answers9

7

I've got the same problem like you. After update Android studio, it getting error. There no need to fix because, Google try to make your app more and more secure. If you try to create another value for default_web_client_id it will show error dupplicate variable. To find the value of default_web_client_id * Change mode to Project -> app -> build -> generated -> google-services -> debug -> values -> values.xml. So, this cause no error when compiling, you no need to fix it. Let wating google fix it later :D

Thân Hoàng
  • 166
  • 1
  • 8
6

I have updated google services version to the latest in Project level build.gradle and worked fine

classpath 'com.google.gms:google-services:4.2.0
Naveen Kumar M
  • 7,497
  • 7
  • 60
  • 74
3

I get the same issue with my code also

Cannot resolve symbol 'default_web_client_id'

i have tried clientID as the argument instead of R.string.default_web_client_id)

.requestIdToken(*My Client Id*)

and get the following in the debug code

W/System.err: com.google.android.gms.common.api.ApiException: 12500:

I have update the google services to the latest in Project level build.gradle (google-serivces:4.2.0)

!The Solution which worked for me!

  1. Sign in to Developer Console

  2. Credentials > Create credentials >API key

  3. Download new google-services.json from Firebase (Project Overview > Users and Permissions > General scroll down
  4. Load new google-services.json into Project>app
  5. Replace Client id with new one generated from google-services.json oauth_client>client_id Note: Use client id with the client_type 3
.requestIdToken(*My New Client Id*)

6.Run your App :)

2

Just come back to the previous classpath version from google services: In my case I had to change from classpath 'com.google.gms:google-services:4.3.10' to classpath 'com.google.gms:google-services:4.3.8' in the build.gradle panel. Sometimes the google services updates do not work properly and that is a good developer headache.

CervanApps
  • 21
  • 1
1

This worked for me:

  1. Go to Google API Console and select the project you want

  2. Look at OAuth 2.0 client IDs. If you don't have already the web client api create one, type Web Client, you have to create one. enter image description here

  3. Go to Firebase console, project settings and download the google-service.json file

  4. Replace the google-service file at your project.

  5. Try to compile. Maybe be worthy to clean the the project or even the cache. If it still fails, then either:

    • you are not applying google services plugin correctly at your project grade file
    • the google-service-plugin is not generating the resource because it can't find the default id. This is happen to me, don't know why.

      The web_default_client is generated from type 3 key, inside oauth_client element. This is how the json file should be for com.google.gms:google-services:4.3.2:

"oauth_client": [
        {
          "client_id": "...",
          "client_type": 1,
          "android_info": {
          "package_name": "...",
          "certificate_hash": "..."
        }
      },
    {
      "client_id": "<put here the Web type Oauth cliend id>,
      "client_type": 3
    }
]

If it has not the client_type 3 node inside the array, add it.

A much simpler way is to pass the token id directly, like this:

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(<put here the Oauth client ID for Web Application type>) but is not good if you have different firebase projects at different flavors.

Notes:

  • Firebase create automatically a web type OAuth ID named "Web client (auto created by Google Service)". Couldn't make it recreate from firebase.
  • Android Type OAuth ids is created automatically when you add a new fingerprint to your firebase project.
MiguelSlv
  • 14,067
  • 15
  • 102
  • 169
0

Before doing anything, I downloaded the most updated google-services.json file from Firebase> Project Settings and replaced it with the one in the project folder. Rebuild the project and It's gone.

smeric
  • 71
  • 7
0

I only opened res (generated) > values > values.xml and no more, the error ended.

xxxxxxxx.apps.googleusercontent.com

Carlos Peñaranda
  • 632
  • 1
  • 6
  • 19
0

None of these solutions worked for me

I tried to put the plugin at the bottom of my build.gradle and the other solutions.

What worked for me was to access to default_web_client_id string programmatically.

In kotlin I created an extension to obtain a resource string

fun Context.getStringFromName(name: String): String {
 return getString(
    resources.getIdentifier(
        name,
        "string",
        packageName
    ))
}

and then

val defaultWebClientId = context.getStringFromName("default_web_client_id")

worked like charm for me!

0

Sync your project by pressing the

Sync Project with Gradle Files Button

KargWare
  • 1,746
  • 3
  • 22
  • 35
Bernard
  • 3
  • 1
  • 3