添加谷歌登录 FirebaseUI 时应用崩溃



当我们添加此行new AuthUI.IdpConfig.GoogleBuilder().build()时,应用程序崩溃并显示此错误"检查您的谷歌服务插件配置,未填充default_web_client_id字符串">
怎么办?我已经尝试了GitHub和StackOverflow中建议的几乎所有解决方案,但我的问题没有解决。我的项目正在使用谷歌登录Firebase UI,我不知道为什么它现在不起作用。
如果我删除谷歌构建器,那么该应用程序可以正常工作。

implementation 'com.firebaseui:firebase-ui-auth:4.3.2'

 dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath 'io.fabric.tools:gradle:1.25.4'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files     // in the individual module build.gradle files
       // classpath 'com.google.gms:google-services:3.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
       // classpath 'com.android.tools.build:gradle:3.0.0'
        classpath 'com.google.gms:google-services:4.2.0'
        classpath 'com.google.firebase:firebase-plugins:1.1.5'

    }

我认为这是Firebase控制台中的一个问题。我使用两个不同的 firebase 项目来分离开发和生产环境,今天我开始在生产中遇到此错误。

我比较了两个生成的google-services.json文件,发现我今天生成的文件在oauth_client数组中缺少另一个对象

这个有效 - 生成default_web_client_id

  "oauth_client": [
    {
      "client_id": "blabalbal-blablabal",
      "client_type": 1,
      "android_info": {
        "package_name": "haha",
        "certificate_hash": "ahaha"
      }
    },
    {
      "client_id": "hahah",
      "client_type": 3
    }
  ],

我今天生成了这个,default_web_client_id不是从这个生成的

  "oauth_client": [
    {
      "client_id": "bababab",
      "client_type": 1,
      "android_info": {
        "package_name": "babab",
        "certificate_hash": "blablbalb"
      }
    }
  ],

所以工作的那个有这个额外的对象:

  {
      "client_id": "hahah",
      "client_type": 3
   }
client_id位于 Google

Cloud Console 中的位置 -> API 和服务 -> 凭据 -> OAuth 2.0 客户端 ID -> "Web 客户端(由 Google 服务自动创建(">

所以我将该对象粘贴回作为临时解决方案......

对我有用的方法如下:

  1. 登录谷歌云控制台
  2. 从左侧菜单中,选择 API 和服务 ->凭据
  3. 从"OAuth 2.0 客户端 ID"部分下的网络客户端(由 Google 服务自动创建(复制客户端 ID
  4. 回到 Android Studio,在 res -> values -> Strings.xml 中,创建一个表单条目

    <string name="default_web_client_id" translatable="false">XXXXXXX</string>
    

(其中 XXXXXXX 是您在步骤 3 中从控制台复制的客户端 ID

  1. 重新编译,应用程序现在应该可以正常工作。

而不是手动编辑google-services.json

  1. 从 Google 云控制台生成新的Client ID for Web application> API 和服务>凭据> OAuth 2.0 客户端 ID。重要的是,选择Web应用程序而不是Android。
  2. 更新(或添加(您的调试、应用签名,并将SHA-1证书指纹上传到您的 Firebase 设置中。
  3. 现在,从 Firebase 设置中下载最新google-services.json
  4. Project> 应用中的旧google-services.json替换为新。
  5. 现在构建您的应用程序。这些步骤将使 Firebase 自动生成一个新的Android client OAuth 2.0,其中包含您手动创建的Client ID for Web application

相关内容

  • 没有找到相关文章

最新更新