App 在发布到play商店後 Firebase Authentication 无法登入问题解决

身为一个App的开发新手常常会遇到一些莫名其妙又难以解决的问题,直到找到问题答案才发现根本是自己愚蠢的错误造成的,往往也因此耗费了大量的时间和精力来解决问题,这边就来记录一下我遇到的愚蠢问题吧,希望也能帮助到有跟我遇到相同问题的人,以节省找答案的时间。

这是我开发的第二个app初次尝试使用Friebase的Authentication 和 Realtime Database功能,简单来说就是能利用第三方登入功能来实现用户资料的储存,要能够连结Firebase与应用必须先在Firebase专案设定中新增SHA凭证指纹
https://ithelp.ithome.com.tw/upload/images/20210503/20136380bgA2Ho1xCH.jpg

其中分为debug版和release版,debug版是我们在测试程序运行时会用到的,也就是在android studio中点击运行後会直接在虚拟机执行的版本,这个SHA凭证指纹可以直接在android studio 种取得,点击右侧的Gradle>你的专案名称>Tasks>android>signingReport 在下方的视窗即可找到。
https://ithelp.ithome.com.tw/upload/images/20210503/20136380WeshqNVHvO.jpg
而release版则是在你输出不论是apk或aab档後产生金钥後利用cmd读取来取得,这边也写一下详细步骤。先假设你已经完成输出并建立金钥(不然这篇可能永远写不完QQ),首先先找到java keytool的位置,我的位置在C:\Program Files\Java\jdk1.8.0_281\bin通常位置都是相同的但jdk版本可能会不同,开启cmd,输入cd/d 你的keytool位置接着输入keytool -list -v -keystore 你输出jks档的位置就可以找到release版的SHA凭证指纹罗。

经过测试後release版跟debug版都能正常运行,接着就兴高采烈的发布了应用程序,经过几天的审核终於上架了,兴奋的下载来使用後却发现竟然无法登入,眼泪直接掉出来,赶紧上网查资料找解答,原来是发布後还需要在firebase中新增一个应用程序签署金钥凭证SHA凭证指纹,要找到这个指纹也很简单,首先登入Google Play Concole,找到你的App,左侧的设定>应用程序完整性,就可以找到罗。(参考:https://stackoverflow.com/questions/39318370/google-sign-in-not-working-after-publishing-in-play-store)
https://ithelp.ithome.com.tw/upload/images/20210503/20136380HdQDobGpox.jpg

这下应该没问题了吧,怀着忐忑的心情再次开启App,紧张的按下了登入,结果竟然还是不行,当场崩溃在电脑桌前,但是问题还是得解决,立马上网继续爬文,最後终於让我找到问题点了,问题在於我在应用发布前都没有去修改应用程序的ID,而发布时曾出现"「com.example」受到限制,请选用其他套件名称。"的提醒。当时时的解决方法是直接进build.gradle中修改applicationId并继续上传,殊不知更改applicationId会使firebase与应用程序间的连结断开,以至於整个firebase的功能都无法使用,而这个问题就没那麽好解决了,因为firebase中的套件名称无法直接修改,必须重新建立一个新的应用程序,我的作法如下:
1.删除firebase中的应用程序(不要删除project
2.移除android studio中的google-services.json文件
3.关闭android studio
4.重新开启android studio利用tool>firebase重新建立连结
5.在Play商店发布新版本
(参考:https://stackoverflow.com/questions/46260799/how-to-change-the-package-name-of-an-app-in-android-studio-linked-to-firebase)

所以在建立一个新的android专案前,先修改专案名称可以省去很多麻烦事,我的经验分享给大家,希望可以帮助到遇到相同问题的人。

有任何新的消息会再更新这篇文章


<<:  资料结构(Data Structure),#阵列(array)-最常见的资料结构

>>:  进击的软件工程师之路-软件战斗营 第九&十周

建立自己Blog系列(二) github Setting

前言 这次会在thub这边要先建立两个Repository Blog Code Blog Hosti...

[Day26]约束规则、更改结构

在Oracle资料库中有两种方式可以定义约束规则(作用相同): 栏位层次约束(行内规范):将规定写在...

Swift 新手-物联网与 iOS App的整合运用

APPIOT 指物联网应用程序,是应用在物联网上的智慧型手机应用程序,APP 是应用程序(appli...

[Day05] - 新拟物风按钮(三) - 参数设定

昨天我们利用 shadow-dom 将元件内外的样式区隔开来 不过 , 目前的 neuomorphi...

【Day16】数据展示元件 - Table

元件介绍 Table 顾名思义就是一个表格元件,用来整齐的显示行列数据。 参考设计 & 属性...