簡體   English   中英

無法解析符號 default_web_client_id GoogleSignInOptions Android Firebase

[英]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)

!對我有用的解決方案!

  1. 登錄開發者控制台

  2. 憑證 > 創建憑證 > API 密鑰

  3. 從 Firebase 下載新的 google-services.json(項目概述 > 用戶和權限 > 常規向下滾動
  4. 將新的 google-services.json 加載到 Project>app 中
  5. 將客戶端 ID 替換為從 google-services.json oauth_client>client_id 生成的新 ID注意:使用客戶端 ID 和 client_type 3
.requestIdToken(*My New Client Id*)

6.運行你的應用程序:)

這對我有用:

  1. 轉到Google API Console並選擇您想要的項目

  2. 查看 OAuth 2.0 客戶端 ID。 如果您還沒有 Web 客戶端 api 創建一個,請鍵入 Web Client,您必須創建一個。 在此處輸入圖片說明

  3. 轉到 Firebase 控制台,項目設置並下載 google-service.json 文件

  4. 替換項目中的 google-service 文件。

  5. 嘗試編譯。 也許值得清理項目甚至緩存。 如果它仍然失敗,那么要么:

    • 您沒有在項目等級文件中正確應用Google 服務插件
    • 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 會自動創建一個名為“Web 客戶端(由 Google 服務自動創建)”的 Web 類型 OAuth ID。 無法從 firebase 重新創建它。
  • 當您向 Firebase 項目添加新指紋時,會自動創建 Android 類型 OAuth id。

在做任何事情之前,我從 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM