我正在嘗試撰寫一個驗證 Google id 令牌的函式。
oauth2 包要求我在創建新服務時傳入背景關系,如下所示:
package services
import (
"context"
"google.golang.org/api/oauth2/v2"
)
func ValidateToken(ctx *context.Context, idToken string) {
// I need to pass context.Context in to the oauth2 library
oauth2Service, err := oauth2.NewService(*ctx)
tokenInfoCall := oauth2Service.Tokeninfo()
tokenInfoCall.IdToken(idToken)
tokenInfo, err := tokenInfoCall.Do()
在 Beegothis.Ctx中是 Beego 背景關系模塊的一個實體,所以這段代碼不會編譯:
func (c *TokenController) Post(ctx *context.Context) {
requestParams := struct {
Google_id_token string
}{}
err := json.Unmarshal(c.Ctx.Input.RequestBody, &requestParams)
// Type mismatch
services.ValidateToken(c.Ctx, requestParams.Google_id_token)
如何獲得需要傳遞給 OAuth2 庫的背景關系?
編輯:我正在通過傳入 context.Background() 來解決它,但我不確定我是否完全理解它的副作用。我對 Golang 很陌生,感覺背景背景關系應該只在“更高”級別使用?
func ValidateToken(idToken string) {
ctx := context.Background()
oauth2Service, err := oauth2.NewService(ctx)
uj5u.com熱心網友回復:
嘗試這個 :c.Ctx.Request.Context()
也不要ctx在函式的 arg 中使用指標,ValidateToken因為 stdlib 中的 context.Context 是介面
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/439700.html
上一篇:PHPCarbon不計算時差
下一篇:Go條件指標值
