亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Go Admin SDK 使用 IdToken 在實時數據庫上進行身份驗證

使用 Go Admin SDK 使用 IdToken 在實時數據庫上進行身份驗證

Go
LEATH 2022-10-24 15:12:41
在 Go 中使用 Firebase Admin SDK 時,我遇到了無法在實時數據庫上進行身份驗證的問題。這是我啟動數據庫連接的方式:option := option.WithTokenSource(tokenSource)app, err := firebase.NewApp(context.Background(), &firebase.Config{    DatabaseURL: "https://databaseName.europe-west1.firebasedatabase.app/",    ProjectID:   "projectId",}, option)client, err := app.Database(context.Background())The是一個返回 atokenSource的習慣。我已經覆蓋了該方法以滿足我的需求,即:首先從自定義端點獲取一個,然后當它過期時,從端點刷新它。TokenSourceReuseTokenSourceToken()IdTokenIdTokensecuretoken.googleapis.com但是使用這種方法,每當我嘗試訪問我的實時數據庫時,我都會收到以下錯誤:http error status: 401; reason: Unauthorized request.即使數據庫的規則完全打開(讀/寫=真)。使用的令牌也是正確的,因為我可以在 HTTP 請求中使用它,唯一的調整是我必須使用?auth=IDTOKEN而不是?access_token=TOKEN(請參閱此處)TLDR:如何使用 Go Admin SDK 中的 IdToken 向實時數據庫驗證服務。(只是補充一點,我可以使用相同的方法和令牌對 Firestore 數據庫上的服務進行身份驗證)。謝謝 !
查看完整描述

1 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

Admin SDK 通過 OAuth2 對后端服務進行身份驗證(通過傳遞Authorization帶有 OAuth2 不記名令牌的標頭)。因此,您必須使用TokenSource產生 OAuth2 令牌的 a。ID 令牌通常僅用于客戶端身份驗證。這是我過去使用的一個示例:


// jsonKeyBytes contains the bytes from a service account json file.

conf, err := google.JWTConfigFromJSON(jsonKeyBytes)


ts := conf.TokenSource(ctx)

firebase.NewApp(ctx, nil, option.WithTokenSource(ts))

但是,通常您會使用服務帳戶或 Google 應用程序默認憑據直接初始化 Admin SDK,在這種情況下您不必執行任何操作。


查看完整回答
反對 回復 2022-10-24
  • 1 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號