一、准备一个已经认证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中保存的用户信息,至此微信授权登录流程已经走完。

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

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

  1. 微信授权登录问题【公众号登录、PC扫描登录】

    微信授权登录问题 微信的授权登录比较多,主要分两大类,一类是微信客户端的公众号网站授权登录 微信公众号网页授权:第二种是网站或者android.ios的授权登录 网站应用微信扫描授权; 具体的andr ...

  2. 微信授权登录的多帐号问题

    微信授权登录时,出现2个个人信息,如何删除? 只需要按住要删除的那个,就会弹出删除按钮,即可删除 下次再授权登录时,就只有1个个人信息了

  3. 微信连接WIFI并关注公众号的方法

    分享一个改造路由器来实现微信连wifi关注公众已经成为一种高效的引流方法. 前提是先有自己的路由器.认证的公众号(服务号或订阅号).开通过门店小程序. 1.进入公众号后以此选择"微信连wif ...

  4. 硅谷课堂 12_公众号消息和微信授权登录

    硅谷课堂第十二天-公众号消息和微信授权登录 文章目录 硅谷课堂第十二天-公众号消息和微信授权登录 一.公众号普通消息 1.实现目标 2.消息接入 2.1.公众号服务器配置 2.2.验证来自微信服务器消 ...

  5. Android:微信授权登录与微信分享全解析

    前言 在移动互联网浪潮中,联网APP已经把单机拍死在沙滩上,很多公司都希望自家应用能够有一套帐号系统,可是许多用户却并不一定买账:我凭啥注册你家应用的帐号?微博,微信,QQ几乎成了每个人手机中的必装应 ...

  6. uni-app - 最详细 H5 网页接入微信登录功能,提供公众号配置与详细注释示例代码(移动端网页实现点击登录按钮后 调用微信公众号授权登录功能 详细讲解接入流程与详细示例代码)官方最新超级详细教程

    前言 关于 uni-app 项目中接入微信授权登录的文章鱼龙混杂,各种乱代码.过时.没注释.不讲流程原理,非常难用. 本文实现了 uni-app H5 移动端网页项目,实现微信授权登录功能,详细讲解接 ...

  7. uniapp - 超详细的 H5 公众号网页微信登录示例代码,提供从 0-1 公众号配置及详细注释代码(站在新手小白的角度)第三方微信授权登录的实现!!

    介绍 目前示例是 "点击按钮登录",你也可以改为 "一进页面就登录" ,可随意改造. 百度的教程都太乱了,而且功能都有一定问题.本文主要讲解 uniapp H5 ...

  8. 微信授权登录-微信公众号和PC端网站

    一.微信公众号授权登录--微信公众平台 微信授权登录,并调用后台接口,获取用户信息 1.网页授权回调域名 首先要在公众平台官网中的"开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授 ...

  9. 关于微信公众号页面获取code进行微信授权登录

    关于微信公众号页面获取code进行微信授权登录 前言 提示:本文章为个人平时开发中的一些坑,对于新手可以耐心看一下,如果您感觉可以的话,请点个小星星再走吧,多谢了~~~ 提示:以下是本篇文章正文内容( ...

最新文章

  1. 怎么将织梦图集模型编辑器改为文章编辑器?
  2. [architecture]-DMB、DSB 和 ISB指令的深度解读
  3. 基于stm32、spi协议的Fatfs文件系统移植(附完整代码下载)
  4. Vue 实现ToDoList
  5. ORB-SLAM2中四叉树管理特征点
  6. JavaScript eval() 函数,计算某个字符串,并执行其中的的 JavaScript 代码。
  7. dbscan算法c语言实现,用C++实现DBSCAN聚类算法
  8. 图片格式之RGB转BMP格式(含代码)
  9. 瑞士加密银行SEBA将发行B轮融资股票作为证券代币
  10. 本地通过Eclipse链接Hadoop操作Mysql数据库问题小结
  11. Atitit it与互联网 的技术体系 目录 1. 概念范围 硬件 软件 应用 1 1.1. 职业分类 2 1.1.1. 软件类 2 1.1.2. 硬件类 2 1.1.3. 网络类 2 1.1.4.
  12. 多重中介效应的示例数据(内附STATA代码)
  13. G.703接口和E1接口区别
  14. 计算机提示运行错误,每次电脑一开机就会提示脚本运行错误
  15. JS将阿拉伯数字翻译成中文的大写数字、JS将数字转换为大写金额(整理)
  16. 【论文阅读】Deep Learning for Encrypted Traffic Classification: An Overview(深度学习方法进行加密流量分类综述)
  17. 盯盯拍罗勇:公司就是我最好的产品
  18. 小数保留两位小数,第三位四舍五入
  19. Android模拟器横屏和竖屏的切换
  20. 电脑睡眠后启动 耳机没有声音 手动启动 -已解决

热门文章

  1. Window系统安装虚拟机,在虚拟机中安装Ubuntu过程记录
  2. Google Earth Engine ——LANDSAT 8 波段计算黄河流域的归一化水体指数NDWI指数
  3. java比较两个word差异_[转载]java在线比较两个word文件
  4. 李宏毅学习笔记38.GAN.09.Improving Sequence Generation by GAN
  5. LockSupport 中的 park 与 unpark
  6. 最全的实际面试题大总结
  7. OpenPLC文献翻译
  8. 13.嵌入式控制器EC实战 SMBus读取温度传感器信息
  9. 中国移动飞信协议分析
  10. js之正则表达式修饰符/ig