本文整理汇总了Golang中github.com/martini-contrib/oauth2.Tokens.Refresh方法的典型用法代码示例。如果您正苦于以下问题:Golang Tokens.Refresh方法的具体用法?Golang Tokens.Refresh怎么用?Golang Tokens.Refresh使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/martini-contrib/oauth2.Tokens
的用法示例。
在下文中一共展示了Tokens.Refresh方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: SocialSignIn
// github && google && ...
func SocialSignIn(tokens oauth2.Tokens) {
transport := &oauth.Transport{}
transport.Token = &oauth.Token{
AccessToken: tokens.Access(),
RefreshToken: tokens.Refresh(),
Expiry: tokens.ExpiryTime(),
Extra: tokens.ExtraData(),
}
// Github API refer: https://developer.github.com/v3/users/
// FIXME: need to judge url
type GithubUser struct {
Id int `json:"id"`
Name string `json:"login"`
Email string `json:"email"`
}
// Make the request.
scope := "https://api.github.com/user"
r, err := transport.Client().Get(scope)
if err != nil {
log.Error("connect with github error: %s", err)
// FIXME: handle error page
return
}
defer r.Body.Close()
user := &GithubUser{}
err = json.NewDecoder(r.Body).Decode(user)
if err != nil {
log.Error("Get: %s", err)
}
log.Info("login: %s", user.Name)
// FIXME: login here, user email to check auth, if not registe, then generate a uniq username
}
示例2: getUserInfo
func getUserInfo(tokens oauth2.Tokens) (userObject map[string]interface{}) {
url := "https://www.googleapis.com/plus/v1/people/me"
token := &goauth2.Token{
AccessToken: tokens.Access(),
TokenType: "Bearer",
RefreshToken: tokens.Refresh(),
Expiry: tokens.ExpiryTime(),
}
client := OauthConfig.Client(goauth2.NoContext, token)
resp, _ := client.Get(url)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
json.Unmarshal(body, &userObject)
addUserObjectToCache(tokens, userObject)
return
}