碰到的問(wèn)題
應(yīng)用修改包名上架后,發(fā)現(xiàn)原來(lái)集成的google第三方登錄失敗,通過(guò)Charles抓包獲取到信息,在google驗(yàn)證獲取token時(shí)失敗,返回錯(cuò)誤信息:UNREGISTERED_ON_API_CONSOLE
調(diào)查過(guò)程
- 根據(jù)錯(cuò)誤信息,比較直觀了解到應(yīng)該是新包名沒(méi)有在google平臺(tái)上注冊(cè)的原因
- 參考stackoverflow中相關(guān)信息,相關(guān)信息1,相關(guān)信息2
問(wèn)題原因
根據(jù)網(wǎng)上的信息可以大致了解到具體造成這個(gè)問(wèn)題可能的原因,主要有三個(gè)可能性
- 相關(guān)Android應(yīng)用沒(méi)有在Google開(kāi)發(fā)者平臺(tái)上進(jìn)行注冊(cè),主要是需要將應(yīng)用包名,SHA-1等信息在開(kāi)發(fā)者平臺(tái)上進(jìn)行登記,最終生成google-services.json文件,放在應(yīng)用的app目錄下。由于沒(méi)有注冊(cè)過(guò)相關(guān)信息,則Google登錄獲取token失敗。
- 信息注冊(cè)錯(cuò)誤,如包名不對(duì),或者應(yīng)用的簽名修改后造成SHA-1改變,沒(méi)有及時(shí)更新信息。這些信息不匹配都會(huì)造成登錄的失敗。
嘗試解決
根據(jù)造成這種bug的可能原因,做了一些嘗試。
- 直接上Google開(kāi)發(fā)者平臺(tái),注冊(cè)新包名應(yīng)用。具體步驟可以參考Google官方教程,獲取到需要的信息:包名、SHA-1,上Google開(kāi)發(fā)者平臺(tái)注冊(cè)應(yīng)用信息,獲取google-services.json文件。
- 配置文件獲取完畢,直接出包測(cè)試,大功告成,可以成功登陸了!
3.后續(xù)嘗試了另一種方法,發(fā)現(xiàn)修改包名后,不一定需要重新在google開(kāi)發(fā)者平臺(tái)上注冊(cè),只要將google-services.json文件中的相關(guān)包名修改一下即可,當(dāng)然前提是簽名沒(méi)變。
總結(jié)
?在修改Android應(yīng)用包名后,如果應(yīng)用內(nèi)集成了google登錄的功能,需要及時(shí)更新google-services.json文件。