无法解析符号default_web_client_id GoogleSignInOptions Android Firebase

uajslkp6  于 2023-08-01  发布在  Android
关注(0)|答案(9)|浏览(117)

我的项目在过去的六个月里运行良好,应用程序在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)

huus2vyu

huus2vyu1#

我和你有同样的问题。更新Android Studio后,出现错误。没有必要修复,因为谷歌试图使您的应用程序越来越安全。如果你尝试为default_web_client_id创建另一个值,它将显示错误重复变量。要查找default_web_client_id * 的值,请将模式更改为Project -> app -> build -> generated -> google-services -> debug -> values -> values. xml。因此,这不会导致编译时错误,您不需要修复它。让wating google稍后修复它:D

q3aa0525

q3aa05252#

我已经更新了谷歌服务版本到最新的项目级build.gradle和工作正常

classpath 'com.google.gms:google-services:4.2.0

字符串

pkmbmrz7

pkmbmrz73#

我的代码也有同样的问题

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服务更新到最新的Project level build.gradle(google-services:4.2.0)
!为我工作的解决方案!
1.登录Developer Console
1.凭据>创建凭据>API密钥
1.从Firebase下载新的google-services.json(项目概述>用户和权限>常规 * 向下滚动 *
1.将新的google-services.json加载到Project>app
1.将客户端ID替换为从google-services.json oauth_client>client_id生成的新ID * 注意:使用client_type 3* 的客户端id

.requestIdToken(*My New Client Id*)


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

rm5edbpk

rm5edbpk4#

回到Google Services的上一个classpath版本:在我的例子中,我不得不在build.gradle面板中将classpath 'com. google. gms:google-services:4.3.10'更改为classpath 'com.google.gms:google-services:4.3.8'。有时谷歌服务更新不能正常工作,这是一个很好的开发者头痛。

shyt4zoc

shyt4zoc5#

这对我很有效:
1.转到Google API Console并选择所需的项目
1.查看OAuth 2.0客户端ID。如果您还没有web客户端API创建一个,请键入Web客户端,您必须创建一个。x1c 0d1x的数据
1.转到Firebase控制台,项目设置并下载google-service.json文件
1.替换项目中的google-service文件。

  • 尝试编译。也许值得清理的项目甚至该高速缓存。如果仍然失败,则:
  • 你没有在你的项目成绩文件中正确应用google services plugin
  • google-service-plugin没有生成资源,因为它找不到默认ID。这是发生在我身上,不知道为什么。

web_default_client是从oauth_client元素中的type 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类型的OAuth ID,名为“Web客户端(由Google Service自动创建)”。无法从Firebase重新创建。
  • Android Type OAuth ID会在您向firebase项目添加新指纹时自动创建。
5tmbdcev

5tmbdcev6#

在做任何事情之前,我从Firebase> Project Settings下载了最新的google-services.json文件,并将其替换为project文件夹中的文件。重建这个项目就没了。

t0ybt7op

t0ybt7op7#

我只打开了res(generated)> values > values.xml,没有更多,错误结束了。
xxxxxxxx.apps.googleusercontent.com

b1uwtaje

b1uwtaje8#

这些解决方案都不适合我
我试着把插件放在build.gradle和其他解决方案的底部。
对我来说有效的是以编程方式访问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")


对我来说就像魅力一样

相关问题