Go 如何从客户端gmail API接收的authcode中获取访问令牌

Go 如何从客户端gmail API接收的authcode中获取访问令牌,go,gmail-api,Go,Gmail Api,我在Go中使用Gmail API作为后端。我在前端使用javascript进行Gmail登录身份验证,并在localhost中使用AJAX Post方法将身份验证代码发送到后端。在后端,我尝试获取访问令牌和刷新令牌。我用交换函数来做这个。但是我得到了错误“oauth2:token已过期,并且未设置刷新token”。Go代码供您参考 func GmailCallback(c *fiber.Ctx) error { googleOauthConfig = &oauth2.Config{

我在Go中使用Gmail API作为后端。我在前端使用javascript进行Gmail登录身份验证,并在localhost中使用AJAX Post方法将身份验证代码发送到后端。在后端,我尝试获取访问令牌和刷新令牌。我用交换函数来做这个。但是我得到了错误“oauth2:token已过期,并且未设置刷新token”。Go代码供您参考

func GmailCallback(c *fiber.Ctx) error {

googleOauthConfig = &oauth2.Config{
    RedirectURL:  "callback_url",
    ClientID:     "XXXXX",
    ClientSecret: "XXXXXXX",
    Scopes:       []string{"Scope1", "Scope2"},
    Endpoint:     google.Endpoint,
}



code := c.Query("code") 

token, err := googleOauthConfig.Exchange(context.Background(), code)
if err != nil {
    log.Println("Error",err)
}

return nil


}
我引用了此页面引用以创建此流:

我还在Node.js中发现了类似的线程。但我不知道如何在围棋中实施


如果我能在这个问题上得到任何帮助,那就太好了。

Hi there@RamarasuR!错误
oauth2:token过期且未设置刷新token
声明oauth2.0 token处理有问题。为了避免实际的令牌处理,请查看并检查其工作令牌管理代码。请在你的项目中使用这些代码,并回信分享你的发现。嗨@Jacques GuzelHeron,谢谢你的回复。在您共享的示例中,他们在Go(服务器端)中完成了身份验证,因为他们在控制台中生成了authCode URL,并且需要在浏览器中浏览该URL,因此将获得用于生成访问令牌的authCode。在这个流中,我们有Go(服务器端)回调URL。但是在我的例子中,我需要用html/javascript(客户端)对用户进行身份验证,然后我将authcode传递给Go(服务器端),在那里我使用了生成访问令牌的相同方法,。。。。。。。。。但是它没有创建访问令牌,所以我在进一步的gmail读取代码中遇到了错误“oauth2:tokenexpired and refresh token is not set”。我想,问题可能在这里:我在开发者控制台中使用html/javascript(客户端)url创建了应用程序,对用户进行身份验证,并获取已发送到Go(服务器端)的authcode,我在那里编写了访问电子邮件的代码,这里的URL与我在开发者控制台应用程序中配置的不同。!这种行为可能源于JavaScript代码和Go语言之间的错误通信。您能确认代币在转移到Go时保持不变吗?为此,请对它们进行比较,并观察是否有任何修改。另外,请澄清为什么您在JavaScript中创建令牌只是为了将其发送出去,您的最终目标是什么?可能有更简单的方法来实现这一目标。是的,代币保持不变。我需要的是从GO访问Gmail API。我有一个前端应用程序,我们有所有的页面设计,包括Gmail身份验证链接,当用户点击它时,他们需要获得Gmail同意屏幕才能访问他们的Gmail。所以我试着用这里的例子,