微信开放平台扫码登陆

微信开放平台扫码登陆微信授权扫码登陆微信开放平台提供了两种登陆方式,一种是会跳转到一个很丑很丑,只有一个二维码的界面里;另一种则是可以自己定制化的(二维码内嵌到自己网站内的方式)第一种方式的完成非常简单,但是第二种方式,就需要前后台都做一些调整了微信扫码登陆的准备工作这是在开始做相关业务开发之前的一些东西去微信开放平台中注册一个账号,并完成自己的开发者资质认证(这个链接应该点不过去,他们token是明…

大家好,又见面了,我是你们的朋友全栈君。

微信授权扫码登陆

微信开放平台提供了两种登陆方式,一种是会跳转到一个很丑很丑,只有一个二维码的界面里;
另一种则是可以自己定制化的(二维码内嵌到自己网站内的方式)

第一种方式的完成非常简单,但是第二种方式,就需要前后台都做一些调整了

微信扫码登陆的准备工作 这是在开始做相关业务开发之前的一些东西

  1. 微信开放平台中注册一个账号,并完成自己的开发者资质认证(这个链接应该点不过去,他们token是明文存在地址栏里的….),开发者资质认证要花 300块钱,可以绑定10个移动应用程序和10个网站应用上(还有公众号、小程序和第三方平台,这些不是主体内容,不做说明)。
  2. 创建网站应用,这些东西按照流程走就好了
  3. 网站应用创建并审批完之后可以直接查看该应用,里面有AppIDAppSecret,用小本本记好,未来要用的
  4. 接口信息里有一个微信登陆,申请开通即可(没有走第一步的可能会提示要认证,老老实实把第一步内容走了吧,该花的钱…让老板报销去吧)
  5. 授权回调域,这个东西填写自己网站(处理扫码登陆相关业务的)后台域名地址,如果后台没有跑在80端口,则需要在里面指定端口号,只要填写顶级域名即可(arunoido.com:411/)(格式有问题的话,在实际操作可能会提示redirect_uri参数错误)子级域名自动继承

操作流程

官方文档里已经给了一套非(shi)常(fen)明(mo)确(hu)的操作手册了,这里贴上文章链接

整体的代码流程如下(说的有一点点抽象,有一个宏观意识就好,不要太专注于某一个地方的实现,后面会说):

  1. 前台界面生成二维码,同时开启轮询,每隔一段时间(时间你定)去查看用户登陆状况
  2. 用户用微信扫描二维码,进入了该网站的授权界面
  3. 前台收到了确认,向后台发起请求,携带codestate
  4. 后台用code请求微信接口,拿到access_token等一系列信息(我是仅作登陆的,所以拿了一个union_id,如果需要的话,可以用access_token换取一些微信用户的信息,然后就可以干一些猥琐的事情了,比如…..比如把别人的微信头像存到自己的数据库里!),将union_id存入redis中,key使用微信提供的state
  5. 前台在轮询过程中会拿到后台返回的结果,没有绑定的跳转登陆界面绑定,有绑定的直接进入
  6. (绑定流程)前台账号密码发送到后台,后台完成绑定

代码处理

前台处理

  1. 微信提供了一个js文件用于生成二维码以及发送请求并完成界面重定向,使用即可,具体说法在官方文档中请求示例下面 步骤一、二,按照文档填写内容即可(注:redirect_uri参数填写后台微信扫码登陆的接口地址)
  2. 修改登陆界面,在选择扫码登陆之后,判断是否绑定账号,如果绑定账号,则用该账号登陆;如果未绑定账号,则需要登陆账号完成微信号的绑定/注册(注:这里要修改一下,传统的登陆是后台响应前台请求,因为扫码结果的回调是被包装过的(微信登陆的那个js里有相关的请求以及响应代码,但是他们没有解释里面的接口,代码也是压缩过的,不方便查看接口方法,所以我也没有把它做成响应的),所以需要去轮询扫码结果,判断登陆状态)
  3. 添加新的接口请求(状态请求接口)

后台处理

  1. 增加三个接口,微信扫码登陆,微信账号绑定和一个查询响应状况的功能
  2. 微信扫码登陆接口使用GET方法,参数有codestate,返回值为void
  3. code请求union_id,并将union_id存入redis中备用,key使用state参数
  4. 查询响应接口使用POST方法,接受参数为state,用于查询union_id,数据为空说明请求超时,有数据但是在数据库中查询不到则说明用户未绑定,有数据且查询到了用户,可以直接调用后台的登陆接口,然后返回token
  5. 微信账号绑定使用POST方法,参数有stateaccpwd。用于扫码登陆的后半段,用户扫码完成之后输入账号密码,账号密码正确且能查出union_id,完成绑定,并调用账号密码的登陆接口,返回token

我一直都误解了微信扫码登陆模块的流程惹…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135294.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • gridview分页显示_html分页显示数据

    gridview分页显示_html分页显示数据首先把CSS样式代码粘贴过来:.gv{   border:1pxsolid#D7D7D7;   font-size:12px;   text-align:center;}.gvHeader{   color:#3F6293;   background-color:#F7F7F7;   height:24px;   line-height:24px;   tex

    2025年11月27日
    4
  • CSS中常用的clearfix方法

    CSS中常用的clearfix方法常用的清除浮动 clearfix 方法 清除兄弟元素带来的浮动影响方法一 在浮动元素后新增一个空 div 标签 设置 clear both 方法二 在有影响的兄弟元素中设置 clear both 清除子元素给父元素带来的浮动影响方法一 给父元素设置 overflow hidden 可加 zoom 1 用于兼容 IE6 方法二 使用 after 伪元素清除浮动 outer after

    2025年12月10日
    5
  • LaTeX 插入图片失败[通俗易懂]

    LaTeX 插入图片失败[通俗易懂]LaTeX插入图片失败(引擎pdflatex)\includegraphics使用figure环境本身可正常编译,只使用\centering时\caption可正常插入。增加\includegraphics[width=10cm]{..}插入png图片时,报错100行,第101行报“Toomanyerrors.TeXstopped.”(已\usepackage{graphicx},不是旧包graphics的问题)几种报错语句重复出现,可能是循环错。“Missinge

    2022年6月6日
    47
  • 数据挖掘领域十大经典算法之—EM算法

    数据挖掘领域十大经典算法之—EM算法相关文章:数据挖掘领域十大经典算法之—C4.5算法(超详细附代码)数据挖掘领域十大经典算法之—K-Means算法(超详细附代码)数据挖掘领域十大经典算法之—Apriori算法数据挖掘领域十大经典算法之—EM算法数据挖掘领域十大经典算法之—PageRank算法数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码)数据挖掘领域十大经…

    2022年5月3日
    52
  • 如何利用Python画图

    如何利用Python画图一、问题描述对于刚刚学习编程的同学来说对编程是非常陌生的,对很多的代码也是非常陌生,高中忙于学习的我们甚至可以说是对编程是一无所知,进入大学进入到这个专业才开始接触很多电脑相关的东西才开始接触编程,下面我就教大家如何利用编程语言画图,以Python语言为例,我们这次利用Python画一个爱心。二、问题分析刚开始进入大学学习的我们,对于高中和大学教学方式的巨大转变一时间可能会有点适应不了导致我…

    2022年5月22日
    42
  • 通俗易懂讲解均方误差 (MSE)「建议收藏」

    通俗易懂讲解均方误差 (MSE)「建议收藏」测量预测值与某些真实值匹配程度。MSE通常用作回归问题的损失函数。例如,根据其属性估算公寓的价格。这是维基百科中定义的均方误差(MSE)公式。它代表了一个非常简单的概念,但如果您刚开始使用ML,可能不太容易读懂。让我们从内而外拆开包装。MSE计算模型的预测Ŷ与真实标签Y的接近程度。您希望误差变为0。如果您预测房价,误差可能是预测价格与实际价格之间的差异。从标签中减去预测是行不通的。误差可能为负也可能为正,这是对样本求和时的问题。您可以取绝对值或误差的平方。取平方有一个特性,它惩罚更大的

    2022年9月30日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号