使用https://github.com/golang/oauth2的例子很少,但它們都不涉及刷新令牌的使用。我嘗試了一些方法,但我仍然不滿意我的結果。如何在golang/oauth2客戶端庫中處理刷新令牌
是否有任何示例代碼,或者您可能知道一些項目在Github使用oauth2 lib
作爲示例?
使用https://github.com/golang/oauth2的例子很少,但它們都不涉及刷新令牌的使用。我嘗試了一些方法,但我仍然不滿意我的結果。如何在golang/oauth2客戶端庫中處理刷新令牌
是否有任何示例代碼,或者您可能知道一些項目在Github使用oauth2 lib
作爲示例?
在存儲參數Expiry
之前,您無需擔心刷新標記。得到 '令牌' 對象後,存儲在數據庫中的以下內容:
token.AccessToken
,token.RefreshToken
,token.TokenType
和token.Expiry
而獲取,構建令牌對象再次使用上述參數:
token := new(oauth2.Token)
token.AccessToken = {{ From DataBase }}
token.RefreshToken = {{ From DataBase }}
token.Expiry = {{ From DataBase }}
token.TokenType = {{ From DataBase }}
然後得到你的http客戶端:
config.Client(ctx, token)
這將處理刷新令牌。摘錄(更多信息:Golang oauth2 client):
客戶端使用提供的令牌返回HTTP客戶端。該令牌將根據需要自動刷新。
唯一的缺點是不刷新訪問令牌。但它的作品! Google對使用刷新令牌的次數沒有限制。
從這個要點(https://gist.github.com/jfcote87/89eca3032cd5f9705ba3#file-gistfile1-go-L26-L30)它似乎是,你應該從你的數據庫檢索令牌並返回它爲* oauth2.Token'。令牌結構定義在這裏:https://github.com/golang/oauth2/blob/master/token.go#L25-L49。鏈接和進一步的討論在這裏:https://github.com/golang/oauth2/issues/84 – Intermernet 2015-02-24 06:33:01
此外,這可能是有趣的「客戶端使用提供的令牌返回HTTP客戶端。令牌將根據需要自動刷新。 「來自https://godoc.org/golang.org/x/oauth2#Config.Client – Intermernet 2015-02-24 06:45:48
謝謝@Intermernet!我會在今晚測試它,但現在我看到了解決我的問題的方法。雖然我的代碼看起來比較相似,但我沒有檢查令牌的有效性,因此在到期後首次調用總是失敗。 – Andrew 2015-02-24 10:00:22