You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
48 lines
1.1 KiB
3 years ago
|
package auth
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"git.oa00.com/go/jcook-sdk/util/http"
|
||
|
|
||
|
"net/url"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
PAppKey = "app_key"
|
||
|
PAppSecret = "app_secret"
|
||
|
PRefreshToken = "refresh_token"
|
||
|
Url = "https://open-oauth.jd.com/oauth2/refresh_token"
|
||
|
PGrantType = "grant_type"
|
||
|
)
|
||
|
|
||
|
type Bearer struct {
|
||
|
AccessToken string `json:"access_token"`
|
||
|
ExpiresIn uint `json:"expires_in"`
|
||
|
RefreshToken string `json:"refresh_token"`
|
||
|
Scope string `json:"scope"`
|
||
|
UID string `json:"uid"`
|
||
|
Time int64 `json:"time"`
|
||
|
TokenType string `json:"token_type"`
|
||
|
Code uint `json:"code"`
|
||
|
Xid string `json:"xid"`
|
||
|
}
|
||
|
|
||
|
func RefreshToken(appKey string, appSecret string, token string) (*Bearer, error) {
|
||
|
value := url.Values{}
|
||
|
value.Set(PAppKey, appKey)
|
||
|
value.Set(PAppSecret, appSecret)
|
||
|
value.Set(PRefreshToken, token)
|
||
|
value.Set(PGrantType, "refresh_token")
|
||
|
data, err := http.JGet(Url, value, nil)
|
||
|
if err != nil {
|
||
|
fmt.Println(err.Error())
|
||
|
return nil, err
|
||
|
}
|
||
|
var b Bearer
|
||
|
if err = json.Unmarshal(data, &b); err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return &b, nil
|
||
|
}
|