Golang通过小程序获取微信openid的方法示例
怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《Golang通过小程序获取微信openid的方法示例》,涉及到openid,有需要的可以收藏一下
为什么要获取小程序的 openid
在开发微信小程序的过程中,小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。那么这个用户身份标识就是 openid。
小程序获取 openid 的流程
那么小程序获取 openid 的流程具体如下,这里我简化了一下,因为我们只需要获取到 openid 即可,具体可以参考 这里
我们需要在小程序中调用 wx.login() 获取 code 码,然后将这个 code 码发送给后端,后端带着这个 code 码和 appid,appsecret 向微信接口发起 http 请求获取 openid。
注意事项
在开发的小程序中的 AppID 一定要和后端使用的 AppID 保持一致,否则会获取 openid 失败
我们请求的微信 API 为 auth.code2Session ,
请求地址为:
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
所需的四个参数为:
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
appid | string | 是 | 小程序 appId | |
secret | string | 是 | 小程序 appSecret | |
js_code | string | 是 | 登录时获取的 code | |
grant_type | string | 是 | 授权类型,此处只需填写 authorization_code |
js_code 就是我们通过 wx.login 得到的 code,grant_type 为 authorization_code,只剩下 appid 和 secret 需要我们登录微信公总平台 里面找
小程序代码演示
为了方便操作,我们在 index 页面编写了一个 button,通过 button 触发事件
<!--index.wxml--> <view class="container"><button bindtap="onGetOpenId">点击获取openid</button> </view>
然后编写事件函数:
//index.js Page({ onGetOpenId() { wx.login({ success: res => { if (res.code) { wx.request({ url: "http://localhost:2020/openid", method: "POST", data: { code: res.code }, success: res => { console.log(res); } }); } } }); } });
那么,在小程序中发送 http 请求强制要求地址必须为 https,由于我们在开发中,我们可以把强制 https 的设置关闭
Go 语言后端代码演示
小程序发过来的数据和去微信 API 获取的数据都是放在 http body 里,所以我们要从 body 获取
package main import ( "encoding/json" "fmt" "net/http" ) func main() { http.HandleFunc("/openid", getOpenID) http.ListenAndServe(":2020", nil) } func getOpenID(writer http.ResponseWriter, request *http.Request) { if request.Method != http.MethodPost { return } var codeMap map[string]string err := json.NewDecoder(request.Body).Decode(&codeMap) if err != nil { return } defer request.Body.Close() code := codeMap["code"] openid, err := sendWxAuthAPI(code) if err != nil { return } fmt.Println("my openid", openid) } 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 sendWxAuthAPI(code string) (string, error) { url := fmt.Sprintf(code2sessionURL, appID, appSecret, code) resp, err := http.DefaultClient.Get(url) if err != nil { return "", err } var wxMap map[string]string err = json.NewDecoder(resp.Body).Decode(&wxMap) if err != nil { return "", err } defer resp.Body.Close() return wxMap["openid"], nil }
运行结果
运行代码,在小程序中点击:
结果:
到此这篇关于Golang通过小程序获取微信openid的方法示例的文章就介绍到这了,更多相关Golang获取openid内容请搜索golang学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持golang学习网!
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

- 上一篇
- Golang实现超时退出的三种方式

- 下一篇
- 使用Go语言创建WebSocket服务的实现示例
-
- 雪白的火车
- 这篇博文太及时了,太全面了,很棒,码起来,关注作者了!希望作者能多写Golang相关的文章。
- 2023-01-15 19:42:03
-
- Golang · Go教程 | 1秒前 |
- Golang单元测试教程:用testing包验证代码
- 446浏览 收藏
-
- Golang · Go教程 | 1分钟前 |
- Golang网络超时设置与deadline策略解析
- 417浏览 收藏
-
- Golang · Go教程 | 7分钟前 |
- Go语言切片技巧与数值转换方法
- 463浏览 收藏
-
- Golang · Go教程 | 10分钟前 |
- Golang指针作map键的限制与比较解析
- 162浏览 收藏
-
- Golang · Go教程 | 20分钟前 |
- Golang集成Prose实现NLP处理方法
- 441浏览 收藏
-
- Golang · Go教程 | 20分钟前 |
- JupyterNotebook配置Go内核教程
- 476浏览 收藏
-
- Golang · Go教程 | 25分钟前 |
- Go遍历结构体数组及成员访问技巧
- 418浏览 收藏
-
- Golang · Go教程 | 26分钟前 | csv文件 特殊字符处理 读取 写入 encoding/csv
- GolangCSV读写与特殊字符处理教程
- 429浏览 收藏
-
- Golang · Go教程 | 29分钟前 |
- Golang日志最佳实践:zap与logrus高级用法
- 170浏览 收藏
-
- Golang · Go教程 | 33分钟前 |
- Golang为何适合高并发服务器?net/http包解析
- 464浏览 收藏
-
- Golang · Go教程 | 35分钟前 |
- Golang并发优化:pprof协程阻塞分析
- 302浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 511次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 498次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 千音漫语
- 千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
- 95次使用
-
- MiniWork
- MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
- 89次使用
-
- NoCode
- NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
- 104次使用
-
- 达医智影
- 达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
- 98次使用
-
- 智慧芽Eureka
- 智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
- 96次使用
-
- Golangmap实践及实现原理解析
- 2022-12-28 505浏览
-
- 试了下Golang实现try catch的方法
- 2022-12-27 502浏览
-
- Go语言中Slice常见陷阱与避免方法详解
- 2023-02-25 501浏览
-
- Golang中for循环遍历避坑指南
- 2023-05-12 501浏览
-
- Go语言中的RPC框架原理与应用
- 2023-06-01 501浏览