[英]Cannot resolve symbol default_web_client_id in Firebase's Android Codelab
[英]Cannot resolve symbol default_web_client_id GoogleSignInOptions Android Firebase
我的项目在过去六个月和 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
文件作为来自此链接的说明
getString(R.string.default_web_client_id)
用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)
我已将 google 服务版本更新到项目级别 build.gradle 中的最新版本并且工作正常
classpath 'com.google.gms:google-services:4.2.0
我和你有同样的问题。 更新 Android Studio 后,出现错误。 无需修复,因为 Google 会尝试使您的应用程序越来越安全。 如果您尝试为 default_web_client_id 创建另一个值,它将显示错误重复变量。 要找到 default_web_client_id 的值 * 将模式更改为 Project -> app -> build ->generated -> google-services -> debug -> values -> values.xml。 因此,这在编译时不会导致错误,您无需修复它。 让等待谷歌稍后修复它:D
我的代码也遇到同样的问题
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.运行你的应用程序:)
这对我有用:
转到Google API Console并选择您想要的项目
查看 OAuth 2.0 客户端 ID。 如果您还没有 Web 客户端 api 创建一个,请键入 Web Client,您必须创建一个。
转到 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.
笔记:
在做任何事情之前,我从 Firebase> 项目设置下载了最新的 google-services.json 文件,并将其替换为项目文件夹中的文件。 重建项目,它不见了。
我只打开 res (generated) > values > values.xml 没有更多,错误结束了。
xxxxxxxx.apps.googleusercontent.com
刚刚从谷歌服务回到以前的类路径版本:在我的情况下,我不得不从类路径 'com.google.gms:google-services:4.3.10' 更改为类路径 'com.google.gms:google-services:4.3 .8' 在 build.gradle 面板中。 有时 google 服务更新无法正常工作,这是一个很好的开发人员头痛。
这些解决方案都不适合我
我试图将插件放在我的 build.gradle 和其他解决方案的底部。
对我default_web_client_id
是以编程方式访问default_web_client_id
字符串。
在 kotlin 中,我创建了一个扩展来获取资源字符串
fun Context.getStringFromName(name: String): String {
return getString(
resources.getIdentifier(
name,
"string",
packageName
))
}
进而
val defaultWebClientId = context.getStringFromName("default_web_client_id")
对我来说就像魅力一样!
好的,首先让我告诉你为什么会这样,因为大多数时候开发人员都可以面对它。 当您将Friebase Auth与google集成后,关闭项目后,default_web_client_id将会消失。
而最可悲的部分是你无法添加自己。
那么现在该怎么办:
解:
转到res - > vlaues - >字符串
添加客户端ID(xxxxxx)
<string name="default_web_client_id" translatable="false">xxxxxxx</string>
你可以在这里找到如何添加
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.