I am trying to learn Firebase, so I went through the Android Codelab. The project they gave me however, had an error:
Cannot resolve symbol default_web_cl
In addition to the Dexto's Answer I would like to mention one more thing In the JSON file you will get two kind of client id
One Which is having client_type value 1 and Another with the client_type value 3 Make sure you specified the client_id of client_type which has value of 3
Download your newest google-services.json
. List of client_id
is present for OAuth 2.0 client IDs in your Google Cloud Credentials.
Then check whether it contains client_id
with "client_type" : 3
or not. If not, you need to create a new one:
google-services.json
again. It should contain client_id
with "client_type" : 3
now.Clean & rebuild your project to apply new API config.
The client_id
with "client_type" : 3
is usually inside oauth_client
tag, not services
or other_platform_oauth_client
.
If you fall to this case & cannot build the project, try copy your client_id
to oauth_client
tag and rebuild again.
"client": [
...
"oauth_client": [
...
{
"client_id": "YOUR WEB CLIENT ID",
"client_type": 3
}
]
]
in my case I forgot to add
id 'com.google.gms.google-services'
to the plugin of build.gradle(:app)
classpath 'com.google.gms:google-services:4.1.0'
has a problem. instead use:
classpath 'com.google.gms:google-services:4.2.0'
I know it is late to answer but hope this will help someone in the future.
To access there is no need to hard code default_web_client_id in app.
To access default_web_client_id in Android App from google-services.json, we have to add SHA1 key under FireBase project Settings.
Go to Firebase Console > Open Project > Select App > Add Fingerprint.
After this copy generated google-services.json to project.
After this you will see the difference in json file as below:
Before :
"oauth_client": []
After :
"oauth_client": [
{
"client_id": "23........4-asdj...........................asda.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.abc.xyz",
"certificate_hash": "asjhdashhs"
}
},.....
This will solve your issue.
Apparently R.string.default_web_client_id
is generated from the IDE build
I had assumed we are supposed to manually add it - time consuming mistake
https://developers.google.com/android/guides/google-services-plugin
The google-services plugin has two main functions: 1) Process the google-services.json file and produce Android resources that can be used in your application's code.
~~~~
The main result of the JSON processing is to produce two XML files which you can reference as Android resources in your Java code.
And so - after successful build, if you search the IDE for string default_web_client_id
, you will see one result is values.xml under the /generated folder, and there it has the values for your firebase config, like the example below.
Actually seeing that file, helped to clarify things here
<resources>
<string name="default_web_client_id" translatable="false">123.apps.googleusercontent.com</string>
<string name="firebase_database_url" translatable="false">https://123.firebaseio.com</string>
<string name="gcm_defaultSenderId" translatable="false">123</string>
<string name="google_api_key" translatable="false">123</string>
<string name="google_app_id" translatable="false">123</string>
</resources>