下面主要介绍如何使用Go语言获取小程序用户的openid
这里采用的是gin框架~
1.获取用户openid的原因
由于用户使用微信小程序后,微信后台会产生一个openid,利用这个唯一的openid可以在将用户信息录入数据库时对用户进行区分
2.获取用户openid的流程
参考微信官方文档:小程序登录 | 微信开放文档 (qq.com)
我们只需要在小程序端中调用wx.login()获取code码,将这个code码发送到后端,后端带着这个code码和appid、appsecret向微信接口发起http请求即可获得openid
注意:
- 小程序端和后端使用的appId要一致,appId和appsecret可以在微信公众平台 (qq.com)中查看
-
我们请求的微信接口为auth.code2Session
请求的地址为:
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
-
同样需要在微信开发者工具中将该选项勾选
3.编写程序
(1)小程序端(在微信开发者工具中编辑)
找到index文件夹
在index.js写入:
//index.js
Page({
getOpenId() {
wx.login({
success (res) {
if (res.code) {
wx.request({
url: 'http://localhost:9090/getOpenId',
method: 'POST',
data: {
code : res.code
},
header: {
"Content-Type": "application/x-www-form-urlencoded"
}
})
}
}
})
}
})
在index.wxss写入:
<view class="container">
<button bindtap="getOpenId">获取openid</button>
</view>
(2)后端(在Go语言编辑器中编辑)
新建一个项目,在main.go写入:
package main
import (
"fmt"
"io/ioutil"
"net/http"
"github.com/gin-gonic/gin"
"github.com/thedevsaddam/gojsonq/v2"
)
const (
code2sessionURL = "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code"
appID = "你的appid"
appSecret = "你的appsecret"
)
func main() {
r := gin.Default()
//获取openId
r.POST("/getOpenId", getOpenId)
r.Run(":9090")
}
func getOpenId(c *gin.Context) {
//获取code
code := c.PostForm("code")
//调用auth.code2Session接口获取openid
url := fmt.Sprintf(code2sessionURL, appID, appSecret, code)
resp, err := http.Get(url)
if err != nil {
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
json := gojsonq.New().FromString(string(body)).Find("openid")
openId := json.(string)
fmt.Println("my openid is: ", openId)
}
4.效果
点击获取openid,可以在后端看到openid