2 Star 12 Fork 1

纸喵软件 / wechat-sdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
qy_oauth.go 2.54 KB
一键复制 编辑 原始数据 按行查看 历史
倒霉狐狸(公司PC-01) 提交于 2019-10-29 14:31 . init commit
package oauth
import (
"encoding/json"
"fmt"
"net/url"
"gitee.com/zhimiao/wechat-sdk/util"
)
var (
qyRedirectOauthURL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=%s&agentid=%s&state=%s#wechat_redirect"
qyUserInfoURL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=%s&code=%s"
qyUserDetailURL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail"
)
//GetQyRedirectURL 获取企业微信跳转的url地址
func (oauth *Oauth) GetQyRedirectURL(redirectURI, agentid, scope, state string) (string, error) {
//url encode
urlStr := url.QueryEscape(redirectURI)
return fmt.Sprintf(qyRedirectOauthURL, oauth.AppID, urlStr, scope, agentid, state), nil
}
//QyUserInfo 用户授权获取到用户信息
type QyUserInfo struct {
util.CommonError
UserID string `json:"UserId"`
DeviceID string `json:"DeviceId"`
UserTicket string `json:"user_ticket"`
ExpiresIn int64 `json:"expires_in"`
}
//GetQyUserInfoByCode 根据code获取企业user_info
func (oauth *Oauth) GetQyUserInfoByCode(code string) (result QyUserInfo, err error) {
qyAccessToken, e := oauth.GetQyAccessToken()
if e != nil {
err = e
return
}
urlStr := fmt.Sprintf(qyUserInfoURL, qyAccessToken, code)
var response []byte
response, err = util.HTTPGet(urlStr)
if err != nil {
return
}
err = json.Unmarshal(response, &result)
if err != nil {
return
}
if result.ErrCode != 0 {
err = fmt.Errorf("GetQyUserInfoByCode error : errcode=%v , errmsg=%v", result.ErrCode, result.ErrMsg)
return
}
return
}
//QyUserDetail 到用户详情
type QyUserDetail struct {
util.CommonError
UserID string `json:"UserId"`
Name string `json:"name"`
Mobile string `json:"mobile"`
Gender string `json:"gender"`
Email string `json:"email"`
Avatar string `json:"avatar"`
QrCode string `json:"qr_code"`
}
//GetQyUserDetailUserTicket 根据user_ticket获取到用户详情
func (oauth *Oauth) GetQyUserDetailUserTicket(userTicket string) (result QyUserDetail, err error) {
var qyAccessToken string
qyAccessToken, err = oauth.GetQyAccessToken()
if err != nil {
return
}
uri := fmt.Sprintf("%s?access_token=%s", qyUserDetailURL, qyAccessToken)
var response []byte
response, err = util.PostJSON(uri, map[string]string{
"user_ticket": userTicket,
})
if err != nil {
return
}
err = json.Unmarshal(response, &result)
if err != nil {
return
}
if result.ErrCode != 0 {
err = fmt.Errorf("GetQyUserDetailUserTicket Error , errcode=%d , errmsg=%s", result.ErrCode, result.ErrMsg)
return
}
return
}
Go
1
https://gitee.com/zhimiao/wechat-sdk.git
git@gitee.com:zhimiao/wechat-sdk.git
zhimiao
wechat-sdk
wechat-sdk
v1.1.2

搜索帮助