Go语言小程序开发快速入门——二、获取用户的openid

下面主要介绍如何使用Go语言获取小程序用户的openid
这里采用的是gin框架~

1.获取用户openid的原因

由于用户使用微信小程序后,微信后台会产生一个openid,利用这个唯一的openid可以在将用户信息录入数据库时对用户进行区分

2.获取用户openid的流程

参考微信官方文档:小程序登录 | 微信开放文档 (qq.com)

我们只需要在小程序端中调用wx.login()获取code码,将这个code码发送到后端,后端带着这个code码和appid、appsecret向微信接口发起http请求即可获得openid

注意:

在这里插入图片描述

  • 我们请求的微信接口为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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值