goauth

package module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2022 License: MIT Imports: 5 Imported by: 0

README

goauth

Oauth2 QQ and WeChat for Golang

Example:

QQ oauth

import "github.com/sanxia/goauth"

qqOauth := goauth.NewQq("you app id", "you app secret", "you callback url")

qqToken, err := qqOauth.GetAccessToken(code)

qqUserInfo, err := qqOauth.GetUserInfo(qqToken.AccessToken, qqToken.OpenId)

WeChat Oauth

weChatOauth := goauth.NewWeChat("you app id", "you app secret", "you callback url")

weChatToken, err := weChatOauth.GetAccessToken(code)

weChatUserInfo, err := weChatOauth.GetUserInfo(weChatToken.AccessToken, weChatToken.OpenId)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseAccessTokenForQq

func ParseAccessTokenForQq(source string) (string, string, int)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 解析QQ返回的AccessToken * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func ParseOpenIdForQq

func ParseOpenIdForQq(source string) string

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 解析QQ返回的OpenId * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func ParseUnionIdForQq

func ParseUnionIdForQq(source string) string

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 解析QQ返回的UnionId * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Types

type IOauth

type IOauth interface {
	SetUri(uriType OauthUriType, uri string)
	GetAuthorizeUrl(args ...string) string
	GetAccessToken(code string) (*OauthToken, error)
	RefreshAccessToken(refreshToken string) (*OauthToken, error)
	GetUserInfo(accessToken, openId string) (*OauthUser, error)
}

func NewQq

func NewQq(clientId, clientSecret, callbackUri string) IOauth

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 初始化Qq授权 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func NewWeChat

func NewWeChat(clientId, clientSecret, callbackUri string) IOauth

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 初始化WeChat授权 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

type Oauth

type Oauth struct {
	ClientId         string //app id
	ClientSecret     string //app secret
	CallbackUri      string //服务器回调地址
	AuthorizeCodeUri string //请求code地址
	AccessTokenUri   string //请求access_token地址
	RefreshTokenUri  string //请求refresh_token地址
	OpenIdUri        string //请求open_id地址
	UserInfoUri      string //请求用户信息地址
}

type OauthQq

type OauthQq struct {
	Oauth
}

================================================================================ * Oauth Qq * qq group: 582452342 * email : 2091938785@qq.com * author : 美丽的地球啊 - mliu * ================================================================================

func (*OauthQq) GetAccessToken

func (s *OauthQq) GetAccessToken(code string) (*OauthToken, error)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 获取AccessToken * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthQq) GetAuthorizeUrl

func (s *OauthQq) GetAuthorizeUrl(args ...string) string

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 获取鉴权地址 * args: state, scope * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthQq) GetOpenId

func (s *OauthQq) GetOpenId(accessToken string) (string, error)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 获取OpenId * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthQq) GetUnionId

func (s *OauthQq) GetUnionId(accessToken string) (string, error)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 获取UnionId * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthQq) GetUserInfo

func (s *OauthQq) GetUserInfo(accessToken, openId string) (*OauthUser, error)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 获取用户信息 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthQq) RefreshAccessToken

func (s *OauthQq) RefreshAccessToken(refreshToken string) (*OauthToken, error)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 刷新AccessToken * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthQq) SetUri

func (s *OauthQq) SetUri(uriType OauthUriType, uri string)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 设置Uri * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

type OauthState

type OauthState struct {
	// contains filtered or unexported fields
}

================================================================================ * Oauth State * qq group: 582452342 * email : 2091938785@qq.com * author : 美丽的地球啊 - mliu * ================================================================================

func NewOauthState

func NewOauthState(encryptKey string, minutes int) *OauthState

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 初始化OauthState * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthState) GetState

func (s *OauthState) GetState() string

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 获取状态值 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthState) IsValid

func (s *OauthState) IsValid(rawState string) bool

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 判断状态值是否有效 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

type OauthToken

type OauthToken struct {
	AccessToken  string
	RefreshToken string
	OpenId       string
	UnionId      string
	ExpiresIn    int
	Scope        string
}

================================================================================ * Oauth Token * qq group: 582452342 * email : 2091938785@qq.com * author : 美丽的地球啊 - mliu * ================================================================================

type OauthUriType

type OauthUriType int
const (
	AuthorizeCodeUri OauthUriType = iota
	AccessTokenUri
	RefreshTokenUri
	OpenIdUri
	UserInfoUri
)

================================================================================ * Oauth * qq group: 582452342 * email : 2091938785@qq.com * author : 美丽的地球啊 - mliu * ================================================================================

type OauthUser

type OauthUser struct {
	Avatar   string
	Nickname string
	Sex      string
	Year     string
	Province string
	City     string
	Token    *OauthToken
}

type OauthWeChat

type OauthWeChat struct {
	Oauth
}

================================================================================ * Oauth WeChat * qq group: 582452342 * email : 2091938785@qq.com * author : 美丽的地球啊 - mliu * ================================================================================

func (*OauthWeChat) GetAccessToken

func (s *OauthWeChat) GetAccessToken(code string) (*OauthToken, error)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 获取AccessToken * { * "access_token":"ACCESS_TOKEN", * "expires_in":7200, * "refresh_token":"REFRESH_TOKEN", * "openid":"OPENID", * "scope":"SCOPE" * } * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthWeChat) GetAuthorizeUrl

func (s *OauthWeChat) GetAuthorizeUrl(args ...string) string

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 获取鉴权地址 * state, scope * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthWeChat) GetUserInfo

func (s *OauthWeChat) GetUserInfo(accessToken, openId string) (*OauthUser, error)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 获取用户信息 * { * "openid":"OPENID", * "nickname":"NICKNAME", * "sex":1, * "province":"PROVINCE", * "city":"CITY", * "country":"COUNTRY", * "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", * "privilege":[ * "PRIVILEGE1", * "PRIVILEGE2" * ], * "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" * } * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthWeChat) RefreshAccessToken

func (s *OauthWeChat) RefreshAccessToken(refreshToken string) (*OauthToken, error)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 刷新AccessToken * { * "access_token":"ACCESS_TOKEN", * "expires_in":7200, * "refresh_token":"REFRESH_TOKEN", * "openid":"OPENID", * "scope":"SCOPE" * } * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

func (*OauthWeChat) SetUri

func (s *OauthWeChat) SetUri(uriType OauthUriType, uri string)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 设置Uri * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

type QqUserInfoResponse

type QqUserInfoResponse struct {
	Ret             int    `form:"ret" json:"ret"`
	Msg             string `form:"msg" json:"msg"`
	Nickname        string `form:"nickname" json:"nickname"`                     //昵称
	Gender          string `form:"gender" json:"gender"`                         //性别。 如果获取不到则默认返回"男"
	Year            string `form:"year" json:"year"`                             //出生年
	Province        string `form:"province" json:"province"`                     //省
	City            string `form:"city" json:"city"`                             //市
	FigureUrl       string `form:"figureurl" json:"figureurl"`                   //大小为30×30像素的QQ空间头像URL
	FigureUrl1      string `form:"figureurl_1" json:"figureurl_1"`               //大小为50×50像素的QQ空间头像URL
	FigureUrl2      string `form:"figureurl_2" json:"figureurl_2"`               //大小为100×100像素的QQ空间头像URL
	FigureUrlQq1    string `form:"figureurl_qq_1" json:"figureurl_qq_1"`         //大小为40×40像素的QQ头像URL
	FigureUrlQq2    string `form:"figureurl_qq_2" json:"figureurl_qq_2"`         //大小为100×100像素的QQ头像URL。需要注意,不是所有的用户都拥有QQ的100x100的头像,但40x40像素则是一定会有
	Vip             string `form:"vip" json:"vip"`                               //标识用户是否为黄钻用户(0:不是;1:是)
	Level           string `form:"level" json:"level"`                           //黄钻等级
	YellowVipLevel  string `form:"yellow_vip_level" json:"yellow_vip_level"`     //黄钻等级
	IsYellowVip     string `form:"is_yellow_vip" json:"is_yellow_vip"`           //标识用户是否为黄钻用户(0:不是;1:是)
	IsYellowYearVip string `form:"is_yellow_year_vip" json:"is_yellow_year_vip"` //标识是否为年费黄钻用户(0:不是; 1:是)
}

================================================================================ * Oauth Qq * qq group: 582452342 * email : 2091938785@qq.com * author : 美丽的地球啊 - mliu * ================================================================================

type WeChatAccessTokenResponse

type WeChatAccessTokenResponse struct {
	ErrCode      string `form:"errcode" json:"errcode"`
	ErrMsg       string `form:"errmsg" json:"errmsg"`
	OpenId       string `form:"openid" json:"openid"`
	UnionId      string `form:"unionid" json:"unionid"`
	AccessToken  string `form:"access_token" json:"access_token"`
	RefreshToken string `form:"refresh_token" json:"refresh_token"`
	ExpiresIn    int    `form:"expires_in" json:"expires_in"`
	Scope        string `form:"scope" json:"scope"`
}

微信访问Token信息响应结构

type WeChatUserInfoResponse

type WeChatUserInfoResponse struct {
	ErrCode    string   `form:"errcode" json:"errcode"`
	ErrMsg     string   `form:"errmsg" json:"errmsg"`
	OpenId     string   `form:"openid" json:"openid"`   //普通用户的标识,对当前开发者帐号唯一
	UnionId    string   `form:"unionid" json:"unionid"` //用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。
	Nickname   string   `form:"nickname" json:"nickname"`
	HeadImgUrl string   `form:"headimgurl" json:"headimgurl"` //用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
	Sex        int      `form:"sex" json:"sex"`               //普通用户性别,1为男性,2为女性
	Country    string   `form:"country" json:"country"`       //国家,如中国为CN
	Province   string   `form:"province" json:"province"`     //普通用户个人资料填写的省份
	City       string   `form:"city" json:"city"`             //普通用户个人资料填写的城市
	Privileges []string `form:"privilege" json:"privilege"`   //用户特权信息,json数组,如微信沃卡用户为(chinaunicom)
}

微信用户信息响应结构

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL