![](/img/trans.png)
[英]Cannot resolve symbol default_web_client_id in Firebase's Android Codelab
[英]Cannot resolve symbol default_web_client_id GoogleSignInOptions Android Firebase
我的項目在過去六個月和 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
文件作為來自此鏈接的說明
getString(R.string.default_web_client_id)
用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)
我已將 google 服務版本更新到項目級別 build.gradle 中的最新版本並且工作正常
classpath 'com.google.gms:google-services:4.2.0
我和你有同樣的問題。 更新 Android Studio 后,出現錯誤。 無需修復,因為 Google 會嘗試使您的應用程序越來越安全。 如果您嘗試為 default_web_client_id 創建另一個值,它將顯示錯誤重復變量。 要找到 default_web_client_id 的值 * 將模式更改為 Project -> app -> build ->generated -> google-services -> debug -> values -> values.xml。 因此,這在編譯時不會導致錯誤,您無需修復它。 讓等待谷歌稍后修復它:D
我的代碼也遇到同樣的問題
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)
!對我有用的解決方案!
登錄開發者控制台
憑證 > 創建憑證 > API 密鑰
.requestIdToken(*My New Client Id*)
6.運行你的應用程序:)
這對我有用:
轉到Google API Console並選擇您想要的項目
查看 OAuth 2.0 客戶端 ID。 如果您還沒有 Web 客戶端 api 創建一個,請鍵入 Web Client,您必須創建一個。
轉到 Firebase 控制台,項目設置並下載 google-service.json 文件
替換項目中的 google-service 文件。
嘗試編譯。 也許值得清理項目甚至緩存。 如果它仍然失敗,那么要么:
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> 項目設置下載了最新的 google-services.json 文件,並將其替換為項目文件夾中的文件。 重建項目,它不見了。
我只打開 res (generated) > values > values.xml 沒有更多,錯誤結束了。
xxxxxxxx.apps.googleusercontent.com
剛剛從谷歌服務回到以前的類路徑版本:在我的情況下,我不得不從類路徑 'com.google.gms:google-services:4.3.10' 更改為類路徑 'com.google.gms:google-services:4.3 .8' 在 build.gradle 面板中。 有時 google 服務更新無法正常工作,這是一個很好的開發人員頭痛。
這些解決方案都不適合我
我試圖將插件放在我的 build.gradle 和其他解決方案的底部。
對我default_web_client_id
是以編程方式訪問default_web_client_id
字符串。
在 kotlin 中,我創建了一個擴展來獲取資源字符串
fun Context.getStringFromName(name: String): String {
return getString(
resources.getIdentifier(
name,
"string",
packageName
))
}
進而
val defaultWebClientId = context.getStringFromName("default_web_client_id")
對我來說就像魅力一樣!
好的,首先讓我告訴你為什么會這樣,因為大多數時候開發人員都可以面對它。 當您將Friebase Auth與google集成后,關閉項目后,default_web_client_id將會消失。
而最可悲的部分是你無法添加自己。
那么現在該怎么辦:
解:
轉到res - > vlaues - >字符串
添加客戶端ID(xxxxxx)
<string name="default_web_client_id" translatable="false">xxxxxxx</string>
你可以在這里找到如何添加
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.