wx

package
v1.0.9 Latest Latest
Warning

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

Go to latest
Published: Jul 30, 2021 License: Apache-2.0 Imports: 8 Imported by: 0

README

微信开发相关

微信第三方登录

适用于网页端,移动端APP的微信登录。参考官方文档

需要客户端和服务端联调。

逻辑如下:

1.客户端先调用以下接口,微信用户允许授权第三方应用后,微信将会携带 CODE 并且回调服务端 http://127.0.0.1:9999

https://open.weixin.qq.com/connect/qrconnect?appid=wx01fdsffsds&redirect_uri=http://127.0.0.1:9999&response_type=code&scope=snsapi_login,snsapi_userinfo&state=test#wechat_redirect

2.服务端收到回调,会连续调用以下链接获取到用户信息。

https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx0189ce76eadccf91&secret=00cc512fc031fcdsfsdfba01c8a41f05b4b5&code=CODE&grant_type=authorization_code

https://api.weixin.qq.com/sns/userinfo?access_token=accessToken&openid=openid&lang=zh_CN

你只需使用该 SDK 实现登录即可:

	appId := ""
	appSecret := ""
	code := "xxx" // 客户端传给你的,客户端可以是Web前端,IOS,Android
	info, err := Login(appId, appSecret, code)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Println(info)

小程序开发

小程序微信登录

小程序登录 区别于网页登录。

需要客户端和服务端联调。

逻辑如下:

1.客户端先调用 wx.login() 获取临时登录凭证 code 并且 获取用户信息 获取 encryptedDataiv 并回传到开发者服务器。

2.服务端使用该 code 调用 auth.code2Session 获取解密密钥,然后解密用户信息。

你只需使用该 SDK 实现登录即可:

	appId := ""
	appSecret := ""
	code := "xxx"  // 小程序前端传给你的
	encryptedData := "afqaf"  // 小程序前端传给你的
	iv := "ssss"  // 小程序前端传给你的
	info, err := MiniLogin(appId, appSecret, code, encryptedData, iv)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Println(info)
小程序发送 消息订阅

完全在服务端执行,不需要客户端参与。

1.先获取全局 token

	appId := ""
	appSecret := ""
	token, err := GlobalToken(appId, appSecret)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	fmt.Println("token is:", token)

2.发送订阅消息

	token, _ := GlobalToken(appId, appSecret)
	openId := "sss"  // 接收者(用户)的 openid
	templateId := ""  // 所需下发的订阅模板id
	page := ""  // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
	data := map[string]string{"thing1": "2222", "thing7": "sss", "thing3": "dddd"}
	state := wxStateFormal // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版

	err = SendMessage(token, openId, templateId, page, data, state)
	if err != nil {
		fmt.Println("send err:", err.Error())
		return
	}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AesDecrypt

func AesDecrypt(crypted, key, iv []byte) ([]byte, error)

func DecryptWXOpenData

func DecryptWXOpenData(sessionKey, encryptData, iv string) ([]byte, error)

Types

type ErrorRsp

type ErrorRsp struct {
	ErrCode int    `json:"errcode"`
	ErrMsg  string `json:"errmsg"`
}

func (*ErrorRsp) Error

func (e *ErrorRsp) Error() string

type Message

type Message struct {
	ToUser           string                 `json:"to_user"`
	TemplateId       string                 `json:"template_id"`
	Page             string                 `json:"page"`
	MiniProgramState string                 `json:"miniprogram_state"`
	Lang             string                 `json:"lang"`
	Data             map[string]interface{} `json:"data"`
}

type MiniUserInfo

type MiniUserInfo struct {
	NickName  string                 `json:"nickName"`
	OpenId    string                 `json:"openId"`
	Img       string                 `json:"avatarUrl"`
	UnionId   string                 `json:"unionId"`
	Sex       int64                  `json:"sex"`
	City      string                 `json:"city"`
	Province  string                 `json:"province"`
	Country   string                 `json:"country"`
	Watermark map[string]interface{} `json:"watermark"`
}

func MiniLogin

func MiniLogin(appId, appSecret, code, encryptedData, iv string) (info *MiniUserInfo, err error)

type Token

type Token struct {
	AccessToken string `json:"access_token"`
}

type UserInfo

type UserInfo struct {
	NickName string `json:"nickname"`
	OpenId   string `json:"openid"`
	Img      string `json:"headimgurl"`
	UnionId  string `json:"unionid"`
	Sex      int64  `json:"sex"`
	City     string `json:"city"`
	Province string `json:"province"`
	Country  string `json:"country"`
}

func Login

func Login(appId, appSecret, code string) (info *UserInfo, err error)

Jump to

Keyboard shortcuts

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