登录
首页 >  Golang >  Go问答

如何在Gmail API中更新令牌以保持连接?

来源:stackoverflow

时间:2024-03-07 13:27:26 343浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《如何在Gmail API中更新令牌以保持连接?》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我刚刚实施了 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 {
        // The file token.json stores the user's access and refresh tokens, and is
        // created automatically when the authorization flow completes for the first
        // time.
        tokFile := "token.json"
        tok, err := tokenFromFile(tokFile) // First seeking local token
        if err != nil {
                tok = getTokenFromWeb(config)
                saveToken(tokFile, tok)
        }
        return config.Client(context.Background(), tok)
}

这应该足以使用刷新令牌,并注意需要后续登录。

我无法通过你的代码判断这个逻辑是否在你的程序中。

如果没有,请检查:

有关刷新令牌如何过期的更多信息,例如可能是:

理论要掌握,实操不能落!以上关于《如何在Gmail API中更新令牌以保持连接?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>