Beego - 我需要 "context.Context" 而不是 Beego 上下文
Beego - I need "context.Context" and not the Beego context
我正在尝试编写一个函数来验证 Google id 令牌。
oauth2 package要求我在创建新服务时传入上下文,像这样:
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()
在Beego中this.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)
试试这个:c.Ctx.Request.Context()
也不要在函数 ValidateToken
的 arg ctx
中使用指针,因为 stdlib 中的 context.Context 是接口
我正在尝试编写一个函数来验证 Google id 令牌。
oauth2 package要求我在创建新服务时传入上下文,像这样:
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()
在Beego中this.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)
试试这个:c.Ctx.Request.Context()
也不要在函数 ValidateToken
的 arg ctx
中使用指针,因为 stdlib 中的 context.Context 是接口