Documentation ¶
Overview ¶
网页授权获取用户基本信息.
Index ¶
Constants ¶
View Source
const ( Language_zh_CN = "zh_CN" // 简体中文 Language_zh_TW = "zh_TW" // 繁体中文 Language_en = "en" // 英文 )
View Source
const ( SexUnknown = 0 // 未知 SexMale = 1 // 男性 SexFemale = 2 // 女性 )
Variables ¶
View Source
var ErrNoHeadImage = errors.New("没有头像")
Functions ¶
func AuthCodeURL ¶
构造请求用户授权获取code的地址.
appId: 公众号的唯一标识 redirectURL: 授权后重定向的回调链接地址 如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。 若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE scope: 应用授权作用域, snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid), snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。 并且,即使在未关注的情况下,只要用户授权,也能获取其信息) state: 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
Types ¶
type Client ¶
type Client struct { *OAuth2Config *OAuth2Token // 程序会自动更新最新的 OAuth2Token 到这个字段, 如有必要该字段可以保存起来 HttpClient *http.Client // 如果 httpClient == nil 则默认用 http.DefaultClient }
func (*Client) CheckAccessTokenValid ¶
检验授权凭证(access_token)是否有效.
NOTE: 1. Client 需要指定 OAuth2Token 2. 先判断 err 然后再判断 valid
func (*Client) Exchange ¶
func (clt *Client) Exchange(code string) (token *OAuth2Token, err error)
通过code换取网页授权access_token.
NOTE: 1. Client 需要指定 OAuth2Config 2. 如果指定了 OAuth2Token, 则会更新这个 OAuth2Token, 同时返回的也是指定的 OAuth2Token; 否则会重新分配一个 OAuth2Token.
func (*Client) TokenRefresh ¶
func (clt *Client) TokenRefresh() (token *OAuth2Token, err error)
刷新access_token(如果需要).
NOTE: Client 需要指定 OAuth2Config, OAuth2Token
type OAuth2Config ¶
type OAuth2Config struct {
AppId, AppSecret string
// 应用授权作用域,多个作用域用逗号(,)分隔;
// 目前有 snsapi_base, snsapi_userinfo.
Scope string
// 用户授权后跳转的目的地址
// 用户授权后跳转到 RedirectURL?code=CODE&state=STATE
// 用户禁止授权跳转到 RedirectURL?state=STATE
RedirectURL string
}
func NewOAuth2Config ¶
func NewOAuth2Config(AppId, AppSecret, RedirectURL string, Scope ...string) *OAuth2Config
func (*OAuth2Config) AuthCodeURL ¶
func (cfg *OAuth2Config) AuthCodeURL(state string) string
请求用户授权获取code的地址.
type OAuth2Token ¶
type OAuth2Token struct { AccessToken string RefreshToken string ExpiresAt int64 // 过期时间, unixtime, 分布式系统要求时间同步, 建议使用 NTP OpenId string Scopes []string // 用户授权的作用域 }
用户相关的 oauth2 token 信息
type UserInfo ¶
type UserInfo struct { OpenId string `json:"openid"` // 用户的唯一标识 Nickname string `json:"nickname"` // 用户昵称 Sex int `json:"sex"` // 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 City string `json:"city"` // 普通用户个人资料填写的城市 Province string `json:"province"` // 用户个人资料填写的省份 Country string `json:"country"` // 国家,如中国为CN // 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像), // 用户没有头像时该项为空 HeadImageURL string `json:"headimgurl,omitempty"` // 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom) Privilege []string `json:"privilege"` // 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。 UnionId string `json:"unionid"` }
func (*UserInfo) HeadImageSize ¶
获取用户图像的大小, 如果用户没有图像则返回 ErrNoHeadImage 错误.
Click to show internal directories.
Click to hide internal directories.