微信授权登录流程以及公众号配置方法(golang后端)

一、准备一个已经认证OK的微信公众号和已经备案的域名,且解析好配置好https证书。

在这里插入图片描述
1.如上图 微信公众号 > 基本配置 ,设置开发者密码
2.设置IP白名单,白名单填写提供后端服务的服务器公网IP
二、公众号服务器配置。
1.找到基本配置
在这里插入图片描述
2.将服务器url填写为你备案的域名,关于URL请求超时token验证失败,可以到下面的文章中查看解决方法。
解决方法传送门
在这里插入图片描述

三、设置jsapi安全域名、授权域名、业务域名。
1.如图找到 公众号设置>功能设置
在这里插入图片描述
2.三个参数都设置为域名
四、在后端设置一个路由返回微信的登录url

// AuthLogin @Title 授权URL
// @router /authLogin [post,get]
func (u *UserController) AuthLogin() {url := "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=" + baseUrl + "&response_type=code&scope=snsapi_userinfo&state=200#wechat_redirect"u.Success(0, url, "成功")
}
注释:
baseUrl为H5中授权成功返回的页面。

五、在网页H5中,打开第四步后端返回的链接进行微信授权,并且保存好微信授权返回的code参数;

1.首先获取授权的URL,然后直接跳转这个URL;

authLogin(){uni.$u.http.get("/user/authLogin").then(response=>{console.log(response)if (response.code === 0){window.location.href = response.data}else{}})}

2.用户点击我同意之后,便会携带code以及state等参数跳转回uni-app的一个页面中,在onload事件里面触发,判断code不为空,则调用第3步的后台接口,获取用户的资料信息。

oauthLogin() {this.loading = trueuni.$u.http.get(`/user/oAuthToken?code=${this.code}`).then(response => {if (response.code === 0) {this.$store.commit('user/token', response.data)uni.navigateTo({url: "/pages/serve"})} else {this.$store.commit('user/token', "")}this.loading = false})
},
onLoad: function(option) {if (option['state'] !== undefined && Number(option.state) === 200 && option['code'] !== undefined) {this.code = option['code']this.oauthLogin()} else {this.loading = falsethis.$wx.initJssdk()}this.loadmore()},

3.后端获取微信用户信息的接口如下,这里要先用code获取accessToken和openid,然后再用accessToken以及openid拿到用户信息,最后做一个缓存,避免重复获取。

// OAuthToken @Title OAuth获取用户信息
// @router /oAuthToken [post,get]
func (u *UserController) OAuthToken() {errRes := oAuthErrRes{}successRes := oAuthRes{}successInfoRes := oAuthInfoRes{}authorization := u.GetString("code", "")u.hasLogin = falseif u.hasLogin == false {url := "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appid + "&secret=" + secret + "&code=" + authorization + "&grant_type=authorization_code"res, err := common.PostReq(url, "")logs.Error(res)err = json.Unmarshal([]byte(res), &errRes)err = json.Unmarshal([]byte(res), &successRes)if err != nil {u.Error(400, "请求错误")}if errRes.Errcode > 0 {u.Error(400, errRes.Errmsg)}url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + successRes.AccessToken + "&openid=" + successRes.Openid + "&lang=zh_CN"res, err = common.PostReq(url, "")logs.Error(res)err = json.Unmarshal([]byte(res), &errRes)err = json.Unmarshal([]byte(res), &successInfoRes)if err != nil {u.Error(400, "请求错误")}if errRes.Errcode > 0 {if u.hasLogin == true {_ = u.ac.Delete(u.token)_ = u.ac.Delete(u.token + "-info")}}_ = u.SetSession("access_token", successRes.AccessToken)_ = u.SetSession("openid", successRes.Openid)m := models.Member{NickName:    successInfoRes.Nickname,Phone:       0,Sex:         successInfoRes.Sex,LoginType:   1,HeadImgUrl:  successInfoRes.Headimgurl,OpenId:      successInfoRes.Openid,UnionId:     successInfoRes.Unionid,AccessToken: successRes.AccessToken,Location:    successInfoRes.Country + " " + successInfoRes.Province + " " + successInfoRes.City,}_ = m.Add()} else {successRes = u.authRessuccessInfoRes = u.infoReslogs.Error("登录缓存信息", successInfoRes)}token := common.GetToken()if u.hasLogin == true {token = u.token}data, _ := json.Marshal(successRes)_ = u.ac.Put(token, string(data), 28*60*60*time.Second)data, _ = json.Marshal(successInfoRes)_ = u.ac.Put(token+"-info", string(data), 28*60*60*time.Second)u.Success(0, token, "请求成功")
}

六、在第五步中,已经将获取到的用户信息保存在cache中,对应的key则是接口中返回的token,之后网页中其它接口,就可以直接拿cache中保存的用户信息,至此微信授权登录流程已经走完。

实际上对接并不难,就是要配置这配置那,哪一步没配置好,就导致出错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/40320.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信公众号用户与网站用户的绑定方案

现在很多网站都已经建立了一套完整的用户账号体系,基于这套体系,再做其他应用的用户扩展就非常方便。例如,有了微软的outlook账户,就可以登录win8,可以登录微软的邮箱,还可以登录skype。同样地,…

微信开放平台 帐号管理 绑定在同一个开放平台帐号下的公众号及小程序让用户unionid一致...

开发十年,就只剩下这套架构体系了! >>> 第三方平台在获得此权限后,可以代替已授权的公众号/小程序创建开放平台帐号或进行绑定/解绑操作。 绑定在同一个开放平台帐号下的公众号及小程序,用户unionid一致。开发者可调用…

wechat-0051,微信公众号,第三方登录—扫码绑定

声明:这边所谓的第三方登录,不是通过网页授权的方式,而是利用生成带参数的二维码,将微信号和平台账号绑定实现。如果你要做的是授权登录,请查看 https://blog.csdn.net/wrongyao/article/details/80229986 微信第三方…

IT创业项目 - 跟淘宝商城合作网赚项目,赚多少你说了算!

【项目介绍】: 使用淘宝商城的巨大流量销售产品或者服务。 【市场前景】: 淘宝网作为最大的B2C交易平台,淘宝商城又是淘宝网要点的发展对象,越来越多的年轻人喜爱在淘宝购买产品和服务。使用好淘宝的流量,赚钱十分简略。其实这是一…

微信公众号开发消息推送以及图文推送

今天给大家分享的关注公众号自动推送图文消息,以及做一个超牛逼的机器人。 先看看效果。 发错图了。。。这是我昨天开发的一款机器人chu了会骂人啥都不会了。我今天将它词库进行了更新和升级,接入了http://www.itpk.cn/ 机器人第三词库 先给你截图&…

【全网最简单】给朋友- 制作,微信公众号推送教程

简介: 前段时间,抖音非常火的微信公众号推送天气,生日,祝福等信息给女朋友专属推送,而且大部分都是Python写的,对于我来说,必须得整起,上java版本,到时候打个包&#xff…

小扎All in AIGC,连夜成立顶级产品团队

金磊 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT的火爆,终究是让Meta坐不住了。 这不,小扎(扎克伯格)连夜对外宣布了公司的大动作: 成立顶级产品团队,专注AIGC。 这个团队可以说是整合了全公司搞AIGC的人才…

MySQL 被 PG 干翻!最赚钱的开发语言是他?

出品 | OSC开源社区(ID:oschina2013) Stack Overflow 发布了 2023 年开发者调查报告,据称共计超过 9 万名开发者参与了此次调查。 完整报告包含了受访开发者画像,以及关于开发技术、AI、职业、社区等方面的内容。本文主要介绍关于…

文心一言员工跳槽工资翻倍,猎头:百万年薪很正常

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 前段时间,国内外科技圈呈现出群雄逐“ChatGPT”的态势:谷歌官宣竞品 Bard 、微软发布 AI 驱动的新版 Bing 搜索引擎和 Edge 浏览器、百度官宣“文心一言”、网易…

AIGC分享交流平台、GPT-4、GPT实时联网、Claude

拥有无限畅谈的AI个人助理,提高效率和创造力,引领未来的智能生活; 不仅承载着最前沿的科技理念,更集成了对人工智能可能性的深度理解。 已支持基于GPT、Claude等主流大模型的对话内容生成、支持GPT联网查询实时信息;基…

2022年休闲游戏市场总结

在预测 2023 年之前,我们先回顾一下 2022 年。从上一年发生的事件中往往能看到未来趋势的影子,所以 2022 年的总结至关重要。 一、2022年总结回顾 1、流行游戏类型 回顾 2022 年,三种超休闲游戏表现最为突出: 跑酷游戏&#xff1a…

破解VProtect所有版本,PATCH HWID方式过注册

运行后: 本机机器码"195F9059606EEB4723128A216ED1426B”,在内存中搜索该字符串,可以得到3个地方,我这里以最后搜索到的地方为切入点, 为什么? 找到的3个地方都下内存断点判断,刚好最后找到…

新加坡国立大学学霸,《快乐机器学习》和《Python 从入门到入迷》作者,FRM,CAIA...

王的机器主理人 王圣元 (FRM, CAIA) 某加密货币公司 Head of Quant 冬海集团 SeaMoney 建模负责人 八方咨询 量化总监 新加坡国立大学金融数学硕士 新加坡国立大学量化金融学士 《快乐机器学习》的作者 《Python 从入门到入迷》的作者 第一本书 《快乐机器学习》 第二本书《Pyt…

瑞芯微推出RV1126性能/案例大评测

瑞芯微推出RV1126性能/案例大评测 目录 案例1:面部识别 案例2:图像分割 案例3:目标检测 一、车载录像性能提升一倍,支持8路1080p视频录像 二、内置2T独立NPU,AI效率更高 三、配备安防级ISP,确保夜拍高清晰度 四、存储空间扩容一倍,记录…

【SAT】

A Tutorial to SAT Solving 约束求解基础与应用4.10 1. SAT的概念 Propositional Satisfiability (SAT):Given a propositional formula φ, test whether there is an assignment to the variables that makes φ true. 公式组成: 布尔变量x litera…

2023年SAT、ACT、AP、Alevel、IB考试时间表

2023年已经来临!以下是2023年SAT、ACT、AP、A-Level、IB考试时间安排,早规划早备考,建议大家收藏!2023 SAT从2023年开始,美国以外的所有SAT考试都将转为机考,美国SAT考试将在2024年全面转为机考。2023年一共…

13万亿邮储银行数字化转型之路

中国邮政储蓄可追溯至1919 年开办的邮政储金业务,至今已有百年历史。2007年 3月,在改革原邮政储蓄管理体制基础上,中国邮政储蓄银行有限责任公司挂牌成立。2012年1月,本行整体改制为股份有限公司。2016年9月本行在香港联交所挂牌上…

国内的Ubuntu镜像源|Ubuntu清华镜像源

国内的Ubuntu镜像源|Ubuntu清华镜像源 今天学习docker需要在线Ubuntu镜像,所以做了一个镜像下载地址笔记,方面以后的下载。 官方镜像下载访问地址: https://cn.ubuntu.com/download/alternative-downloads 网页拉到最下,找到chi…

AI生成答辩PPT教程

一:通过”AI帮个忙“网站的PPT大纲生成器生成大纲 1 AI帮个忙 | 多功能AI小帮手点击网站进入 1 输入主题(论文名)会生成大纲 2 复制全部内容 二:通过大纲在AI生成PPT网站进行生成内容 1.通过网站生成,下面提供两种…

AI创作之如何使用Stable Diffusion AI 将自己变成皮克斯动画角色 (教程含完整操作步骤)

无论您想成为下一个伍迪、下一个巴斯光年,还是将您的鱼变成下一个尼莫,Stable Diffusion都能实现。使用这种潜在的文本到图像扩散模型,您只需一个简单的文本提示,就可以将自己变成任何皮克斯角色的样子。 在本文中,我将向您展示如何在本地 PC 上运行 Stable Diffusion,并…