繁体   English   中英

无法解析符号 default_web_client_id GoogleSignInOptions Android Firebase

[英]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)

!对我有用的解决方案!

  1. 登录开发者控制台

  2. 凭证 > 创建凭证 > API 密钥

  3. 从 Firebase 下载新的 google-services.json(项目概述 > 用户和权限 > 常规向下滚动
  4. 将新的 google-services.json 加载到 Project>app 中
  5. 将客户端 ID 替换为从 google-services.json oauth_client>client_id 生成的新 ID注意:使用客户端 ID 和 client_type 3
.requestIdToken(*My New Client Id*)

6.运行你的应用程序:)

这对我有用:

  1. 转到Google API Console并选择您想要的项目

  2. 查看 OAuth 2.0 客户端 ID。 如果您还没有 Web 客户端 api 创建一个,请键入 Web Client,您必须创建一个。 在此处输入图片说明

  3. 转到 Firebase 控制台,项目设置并下载 google-service.json 文件

  4. 替换项目中的 google-service 文件。

  5. 尝试编译。 也许值得清理项目甚至缓存。 如果它仍然失败,那么要么:

    • 您没有在项目等级文件中正确应用Google 服务插件
    • 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 会自动创建一个名为“Web 客户端(由 Google 服务自动创建)”的 Web 类型 OAuth ID。 无法从 firebase 重新创建它。
  • 当您向 Firebase 项目添加新指纹时,会自动创建 Android 类型 OAuth id。

在做任何事情之前,我从 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM