无法解析符号default_web_client_id GoogleSignInOptions Android Firebase

时间:2019-01-23 09:02:23

标签: android firebase firebase-authentication google-signin

我的项目在过去的六个月中都可以正常运行,并且可以在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) 

7 个答案:

答案 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)

!对我有用的解决方案!

  1. 登录到Developer Console

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

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

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

答案 3 :(得分:1)

这对我有用:

  1. 转到Google API Console并选择所需的项目

  2. 查看OAuth 2.0客户端ID。如果还没有Web客户端api创建一个,请键入Web Client,则必须创建一个。 enter image description here

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

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

  5. 尝试编译。也许值得清理项目甚至缓存。如果仍然失败,则可以:

    • 您没有在项目成绩文件中正确应用google services plugin
    • 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 Service自动创建)”的网络类型OAuth ID。无法从Firebase重新创建它。
  • 当您向Firebase项目添加新指纹时,会自动创建
  • Android类型的OAuth ID。

答案 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>

您可以找到这个 这里如何添加

CLICK THIS LINK TO WATCH VIDEO FOR BETTER AND EASY SOLUTION