golang开发微信小程序后台获取openid与小程序码.pdf
    golang开发微信小程序后台获取openid与小程序码.md                                        2022/10/19 
   微信openid是表示用户在当前应用中的唯一标识,比如小程序,微信公众号等,这些都算是一个应用。 
   如果有多个应用,同一个用户的openId可能并不相同。 
 1. 微信小程序登录流程 
 如下图所示为微信开发者文档中提供的小程序登录流程图  
 如图中所示,在小程序前端中使用wx.login()获取code后,调用后台程序,由后台再根据appid + 
 appsecret + code继续请求微信接口服务,从而得到openid ,并返回给前端。 
 因为appid和appsecret是小程序的唯一标识,属于绝对私密信息,所以通过后台程序调用微信接口服务就理 
 所应当了。 
 2. 小程序前端实现 
 示例 
                                      1 / 4 
golang开发微信小程序后台获取openid与小程序码.md                                                           2022/10/19 
    App({  
    onLaunch: function() {  
        var self = this;  
        // 展示本地存储能力  
        var logs = wx.getStorageSync( 'logs') || []  
        logs.unshift(Date.now())  
        wx.setStorageSync( 'logs', logs)  
      
        // 登录  
        wx.login({  
          success: res => {  
            // 发送 res.code 到后台换取 openId, sessionKey, unionId  
            var Params = {  
              code: res.code, //临时登录凭证  
            };  
            //生成加密key  
            wx.request({  
              url: '', // *********此处填写第三方的接口地址*********  
              data: '=' + JSON.stringify(Params),  
              header: {  
                 'content-type': 'application/json'  
              },  
              method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT  
              success: function(res) {  
                var openid = res.data.RntData.openid //返回openid  
                self.globalData.openid = openid;  
                console.log(openid);  
              }  
            })  
          }  
        })  
       调用wx.login()获取临时登录凭证code ,并回传到开发者服务器。 
       接收后台响应结果,并解析获取openid。小程序端与后台交互具体接口可变,此处为一个示例。 
 3. 小程序后台实现 
 后台调用auth.code2Session接口,换取用户唯一标识 OpenID、 用户在微信开放平台帐号下的唯一标识 
 UnionID  (若当前小程序已绑定到微信开放平台帐号) 和会话密钥 session_key。 
 查看微信开发者文档中auth.code2Session接口介绍,后台只需要根据appid、appsecret以及前端传入的 
 code组装http get请求访问微信接口服务即可获取openid。 
 请求url地址: 
    GET /sns/jscode2session? 
    appid=APPID&secret=SECRET