繁体   English   中英

添加Google登录Firebaseui时应用崩溃

[英]app crash when add google login firebaseui

当我们添加此行new AuthUI.IdpConfig.GoogleBuilder().build() ,应用程序崩溃并显示此错误“检查您的google-services插件配置,未填充default_web_client_id字符串”
该怎么办? 我已经尝试了GitHub和StackOverflow中建议的几乎所有解决方案,但是我的问题没有解决。 我的项目使用的是Google登录Firebase UI,但我不知道为什么现在无法使用。
如果我删除googlebuilder,则该应用程序可以正常运行。

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云控制台中的位置-> API和服务 -> 凭据 -> OAuth 2.0客户端ID- >“ Web客户端(由Google Service自动创建)”

因此,我将该对象粘贴回作为临时解决方案...

对我有用的方法如下:

  1. 登录到Google Cloud Console
  2. 从左侧菜单中,选择API和服务->凭据
  3. 从Web客户端(由Google Service自动创建)中的“ OAuth 2.0客户端ID”部分复制客户端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云控制台> API和服务>凭据> OAuth 2.0客户端ID生成Client ID for Web application的新Client ID for Web application 端ID 重要的是您选择Web应用程序而不是Android。
  2. 更新(或添加)调试,应用签名并将SHA-1证书指纹上载到Firebase设置。
  3. 现在,从您的Firebase设置中下载最新的google-services.json
  4. Project>应用中的旧google-services.json替换为新的。
  5. 现在构建您的应用程序。 这些步骤将使Firebase在OAuth 2.0中自动生成一个新的Android client ,其中包括您手动创建的Client ID for Web applicationClient ID for Web application

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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