Go 如何使用谷歌api库oauth2?我有id令牌和访问令牌
如果我从前端对用户进行了身份验证,我如何授权访问后端(使用go google Library)?前端身份验证,我有Go 如何使用谷歌api库oauth2?我有id令牌和访问令牌,go,google-api,google-oauth,gmail-api,google-signin,Go,Google Api,Google Oauth,Gmail Api,Google Signin,如果我从前端对用户进行了身份验证,我如何授权访问后端(使用go google Library)?前端身份验证,我有access\u-token或id\u-token 有没有办法将id\u令牌转换为访问令牌 有没有办法使用id\u令牌运行calendar.NewService 有没有办法使用access\u token运行calendar.NewService 我的设置 在扩展中,我完成了两项工作: 从GCP creds oauth2“chrome应用程序”中,我可以获得“访问令牌” 从GC
access\u-token
或id\u-token
- 有没有办法将
转换为id\u令牌
访问令牌
- 有没有办法使用
运行id\u令牌
calendar.NewService
- 有没有办法使用
运行access\u token
calendar.NewService
- 从GCP creds oauth2“chrome应用程序”中,我可以获得“访问令牌”
- 从GCP creds oauth2“web app”,我可以获得“id令牌”
id\u令牌
或access\u令牌
来使用这个库。到目前为止,我可以使用access_令牌执行curl请求,但它不使用这个库。这个谷歌图书馆有办法吗
尝试
- 我在书中读到,只要你在同一个项目中指向同一个客户ID,你就可以继续。但我不断得到,
令牌过期或找不到
- 我听说id_令牌就是jwt。所以我试过了,但是我不能得到正确的类型,所以我甚至不能运行它
- 已尝试使用oauth2 key.json
“代码”不重要,因为我不想通过浏览器链接验证用户。此时,用户应该假定已经从前端进行了身份验证。但是这也不行。很抱歉,文档中没有示例。是的,我试过了,最后得到了 身份证没用 在访问令牌之前,我有一个身份验证码。我希望在他们的文档中,他们说的是authcode而不是code。我只是将身份验证代码从前端传递到后端。由于我是新手,请删除任何html编码。ie(%2f=>/)。这也是我不能得到它的一个原因 以下工作:
authCode := "4/3AGEkPVEN9O**70ish char***G0uOPYtQWkUSc"
// authcode was html encoded which the conf.Exchange needed a decoded version.
saKey, err := ioutil.ReadFile("oauth2_webapp.json")
conf, err := google.ConfigFromJSON(saKey, calendar.CalendarReadonlyScope)
token, err := conf.Exchange(ctx,authCode)
您必须意识到访问令牌通常在60分钟后过期,考虑设置。更一般地说,您的身份验证需要遵循Google授权的流程之一。首先估计哪一个是您的,然后阅读相应的Auth协议的文档,例如,谢谢提示。但那不是我想要的。我期待使用GoAPI库。在给定访问令牌的情况下,我不知道如何使用它。我node.js实现与您的案例相关?如果您有有效的访问令牌,是什么阻止您将其用于for go?我尝试的原始方法只提供了accesstoken。使用chrome标识。只有访问令牌是不够的。完整令牌(访问、刷新、到期和类型)。所以我找到了另一种获取身份验证代码的方法,而不是后来才意识到“代码”是身份验证代码。他们的医生很烂。希望我们能编辑和改进它。
jwt, err := google.JWTConfigFromJSON(g.key, gmail.GmailReadonlyScope)
jwt.Subject = "myname@gmail.com" //impersonate user
service, err := calendar.NewService(ctx, option.WithHTTPClient(jwt.Client(ctx)))
serviceAccountKey, err := ioutil.ReadFile("oauth2_webapp.json")
conf, err := google.ConfigFromJSON(serviceAccountKey, calendar.CalendarReadonlyScope)
token, err := conf.Exchange(ctx,"code") // code seems like another method
calendarService, err := calendar.NewService(ctx,
option.WithTokenSource(config.TokenSource(ctx, token)))
res, err := calService.Events.List("myemail@gmail.com").Do()
authCode := "4/3AGEkPVEN9O**70ish char***G0uOPYtQWkUSc"
// authcode was html encoded which the conf.Exchange needed a decoded version.
saKey, err := ioutil.ReadFile("oauth2_webapp.json")
conf, err := google.ConfigFromJSON(saKey, calendar.CalendarReadonlyScope)
token, err := conf.Exchange(ctx,authCode)