|
@@ -29,6 +29,11 @@ func NewMiniClient(appID, appSecret string) *MiniClient {
|
|
|
return c
|
|
|
}
|
|
|
|
|
|
+// TokenKey token key in cache
|
|
|
+func (mc *MiniClient) TokenKey() string {
|
|
|
+ return keyMiniToken(mc.AppID)
|
|
|
+}
|
|
|
+
|
|
|
// GetMiniOpenID get openid by code
|
|
|
func (mc *MiniClient) GetMiniOpenID(frm FormCode) (s MiniSession, err error) {
|
|
|
uri := BaseURL + "/sns/jscode2session?"
|
|
@@ -79,6 +84,12 @@ func (mc *MiniClient) getToken() (token string, err error) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ token, err = mc.UpdateToken()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (mc *MiniClient) UpdateToken() (token string, err error) {
|
|
|
+ now := time.Now().Unix()
|
|
|
uri := BaseURL + "/cgi-bin/token?"
|
|
|
|
|
|
args := url.Values{}
|
|
@@ -88,16 +99,20 @@ func (mc *MiniClient) getToken() (token string, err error) {
|
|
|
|
|
|
uri += args.Encode()
|
|
|
var jq *myth.JSONQuery
|
|
|
- if jq, err = getJSON(uri); err == nil {
|
|
|
- mc.LastTokenTime = now
|
|
|
- mc.AccessToken, err = jq.String(`access_token`)
|
|
|
- token = mc.AccessToken
|
|
|
- k := keyMini(mc.AppID)
|
|
|
- memcache.Store(k, mc)
|
|
|
- ct := ClientToken{AppID: mc.AppID, AccessToken: mc.AccessToken, LastTokenTime: now}
|
|
|
- bs, _ := json.Marshal(ct)
|
|
|
- cache.Set(key, string(bs), 0)
|
|
|
+ jq, err = getJSON(uri)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
}
|
|
|
+
|
|
|
+ key := keyMiniToken(mc.AppID)
|
|
|
+ mc.LastTokenTime = now
|
|
|
+ mc.AccessToken, err = jq.String(`access_token`)
|
|
|
+ token = mc.AccessToken
|
|
|
+ k := keyMini(mc.AppID)
|
|
|
+ memcache.Store(k, mc)
|
|
|
+ ct := ClientToken{AppID: mc.AppID, AccessToken: mc.AccessToken, LastTokenTime: now}
|
|
|
+ bs, _ := json.Marshal(ct)
|
|
|
+ cache.Set(key, string(bs), 0)
|
|
|
return
|
|
|
}
|
|
|
|