Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go gmail api令牌过期了如何获取新令牌?_Go_Google Api_Google Oauth_Gmail Api - Fatal编程技术网

Go gmail api令牌过期了如何获取新令牌?

Go gmail api令牌过期了如何获取新令牌?,go,google-api,google-oauth,gmail-api,Go,Google Api,Google Oauth,Gmail Api,我刚刚实现了Gmail OAuth服务,我可以发送电子邮件,但在它过期一段时间后,我想知道如何自动续费 在这里。这是我的代码: func OAuthGmailService() { config := oauth2.Config{ ClientID: "XXXXXX", ClientSecret: "XXXXXX", Endpoint: google.Endpoint, Red

我刚刚实现了Gmail OAuth服务,我可以发送电子邮件,但在它过期一段时间后,我想知道如何自动续费

在这里。这是我的代码:

func OAuthGmailService() {
    config := oauth2.Config{
       ClientID:     "XXXXXX",
       ClientSecret: "XXXXXX",
       Endpoint:     google.Endpoint,
       RedirectURL:  "http://127.0.0.1",
    }
 
    token := oauth2.Token{
       AccessToken:  "XXXXXX",
       RefreshToken: "XXXXXX",
       TokenType:    "Bearer",
       Expiry: time.Now(),
    }
    

    var tokenSource = config.TokenSource(context.Background(), &token)
 
    srv, err := gmail.NewService(context.Background(), option.WithTokenSource(tokenSource))
    if err != nil {
       log.Printf("Unable to retrieve Gmail client: %v", err)
    }
 
    GmailService = srv
    if GmailService != nil {
       fmt.Println("Email service is initialized \n")
    }

 }
首先查找本地令牌 在快速入门文档中:

getClient
函数中:

func getClient(config*oauth2.config)*http.Client{
//文件token.json存储用户的访问和刷新令牌,并且
//在第一次完成授权流时自动创建
//时间。
tokFile:=“token.json”
tok,err:=tokenFromFile(tokFile)//首先查找本地令牌
如果错误!=零{
tok=getTokenFromWeb(配置)
saveToken(tokFile,tok)
}
返回config.Client(context.Background(),tok)
}
这应足以使用刷新令牌,并注意需要后续登录

我无法通过你的代码判断你的程序中是否有这种逻辑

如果没有,请查看:

有关刷新令牌如何过期的详细信息,例如,它可能是:

用户帐户已超过授予(活动)刷新令牌的最大数量


我投票结束这个问题,因为这是一个与客户服务相关的问题。直接联系供应商寻求帮助。我们无法帮助您解答有关您在该网站上的特定帐户的问题。投票重新开始,因为它与客户服务无关。然而,它确实与如何将GoogleOAuth与Go编程语言结合使用以及理解Oauth2如何与刷新令牌一起工作有关。访问令牌在一小时后过期。需要时,应使用刷新令牌请求新的访问令牌。一个。我不能帮你在围棋中做到这一点,但这可能有助于你可以尝试在文档中挖掘,以帮助你了解如何在围棋中做到这一点。