1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| package main
import ( "encoding/json" "fmt" "io/ioutil" "log" "net/http" )
type GetAccessTokenResponseEntity struct { AccessToken string `json:"access_token"` ExpiresIn int `json:"expires_in"` RefreshToken string `json:"refresh_token"` OpenID string `json:"openid"` Scope string `json:"scope"` UnionID string `json:"unionid"` }
type VerificationAccessTokenResponseEntity struct { ErrCode int `json:"errcode"` ErrMsg string `json:"errmsg"` }
type GetWechatUserInformationResponseEntity struct { OpenID string `json:"openid"` Nickname string `json:"nickname"` Sex int `json:"sex"` Language string `json:"language"` City string `json:"city"` Province string `json:"province"` Country string `json:"country"` HeadImageUrl string `json:"headimgurl"` PrivilegeList []string `json:"privilege"` UnionID string `json:"unionid"` }
func main() { var appID = "<appid>" var secret = "<secret>" var code = "<code>"
var openID string var accessToken string if res, err := http.Get(fmt.Sprintf("https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&grant_type=authorization_code&code=%s", appID, secret, code)); err != nil { log.Panicln(err.Error()) } else { defer res.Body.Close() if res, err := ioutil.ReadAll(res.Body); err != nil { log.Panicln(err.Error()) } else { var response GetAccessTokenResponseEntity if err := json.Unmarshal(res, &response); err != nil { log.Panicln(err.Error()) } openID = response.OpenID accessToken = response.AccessToken } }
if res, err := http.Get(fmt.Sprintf("https://api.weixin.qq.com/sns/auth?openid=%s&access_token=%s", openID, accessToken)); err != nil { log.Panicln(err.Error()) } else { defer res.Body.Close() if res, err := ioutil.ReadAll(res.Body); err != nil { log.Panicln(err.Error()) } else { var response VerificationAccessTokenResponseEntity if err := json.Unmarshal(res, &response); err != nil { log.Panicln(err.Error()) } if response.ErrCode != 0 { log.Panicln(response.ErrMsg) } } }
var wechatUserInformation GetWechatUserInformationResponseEntity if res, err := http.Get(fmt.Sprintf("https://api.weixin.qq.com/sns/userinfo?openid=%s&access_token=%s", openID, accessToken)); err != nil { err.Error() } else { defer res.Body.Close() if res, err := ioutil.ReadAll(res.Body); err != nil { err.Error() } else { var response GetWechatUserInformationResponseEntity if err := json.Unmarshal(res, &response); err != nil { err.Error() } wechatUserInformation = response } }
log.Println(wechatUserInformation) }
|