我的项目在过去的六个月中都可以正常运行,并且可以在Play商店中使用应用。对于更新,我重新打开该项目,显示以下代码段未解析default_web_client。
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
我尝试以下方法,
1。清理并重建
2。清除缓存并重新启动
3。将getString(R.string.default_web_client_id)
设置为空字符串并运行项目以生成
app/build/generated/res/google-services/{build_type}/values/values.xml
文件作为this链接中的指令
4。用getString(R.string.default_web_client_id)
现在,我可以运行该项目,也可以进行发布了。但仍然无法解析符号default_web_client_id。
任何更新都会有所帮助...
注意:直接添加oauth_client->client_id
会出错
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)
答案 0 :(得分:6)
我已将Google服务版本更新为Project级build.gradle的最新版本,并且工作正常
classpath 'com.google.gms:google-services:4.2.0
答案 1 :(得分:5)
我遇到了和你一样的问题。更新Android Studio后,它会出错。 无需修复,因为Google尝试使您的应用程序越来越安全。如果您尝试为default_web_client_id创建另一个值,它将显示错误dupplicate变量。 查找default_web_client_id的值 *将模式更改为项目->应用程序->构建->生成-> google-services->调试->值-> values.xml。 因此,这在编译时不会导致任何错误,您无需对其进行修复。让谷歌稍后修复它:D
答案 2 :(得分:2)
我的代码也遇到同样的问题
Cannot resolve symbol 'default_web_client_id'
我尝试使用clientID作为参数,而不是R.string.default_web_client_id)
.requestIdToken(*My Client Id*)
并在调试代码中获取以下内容
W/System.err: com.google.android.gms.common.api.ApiException: 12500:
我已将Google服务更新到项目级别build.gradle的最新版本(google-serivces:4.2.0)
!对我有用的解决方案!
凭据>创建凭据> API密钥
.requestIdToken(*My New Client Id*)
6。运行您的应用程序:)
答案 3 :(得分:1)
这对我有用:
转到Google API Console并选择所需的项目
转到Firebase控制台,进行项目设置并下载google-service.json文件
在您的项目中替换google-service文件。
尝试编译。也许值得清理项目甚至缓存。如果仍然失败,则可以:
google-service-plugin无法生成资源,因为它找不到默认ID。这是我的事,不知道为什么。
web_default_client是从oauth_client元素内部的3类密钥生成的。这就是com.google.gms:google-services:4.3.2
的json文件的格式:
"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 } ]
如果数组内部没有client_type 3节点,则添加它。
一种更简单的方法是直接传递令牌ID,如下所示:
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.
注意:
答案 4 :(得分:0)
在执行任何操作之前,我从Firebase> Project Settings下载了最新的google-services.json文件,并将其替换为project文件夹中的文件。重建项目,它就消失了。
答案 5 :(得分:0)
我只打开了 res (generated) > values > values.xml 没有更多,错误结束了。
xxxxxxxx.apps.googleusercontent.com
答案 6 :(得分:-1)
好吧,首先让我告诉您为什么会这样,因为大多数时候开发人员都可以面对它。 当您将Friebase Auth与google集成时,然后关闭项目,您的default_web_client_id将消失。
最可悲的是,你无法添加自己。
那现在该怎么办:
解决方案:
转到res-> vlaues->字符串
添加客户端ID(xxxxxx)
<string name="default_web_client_id" translatable="false">xxxxxxx</string>
您可以找到这个 这里如何添加