博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP微信第三方扫码登录技术问题
阅读量:4108 次
发布时间:2019-05-25

本文共 1305 字,大约阅读时间需要 4 分钟。

转自

http://blog.csdn.net/qq_16453867/article/details/50786541

写这篇文章是为了记录自己在写微信第三方网页扫码登录遇到的相关问题,如果没有任何经验的最好先去看微信开放平台(不是微信公众平台)的相关文档!好了,现在开始。

1.想要进行微信第三方网页扫码登录必须要到微信开放平台进行注册和获取相关权限

因为微信开放平台是需要一定的费用(也就是300块),话说我一穷屌丝程序猿只能用公司的账号咯~~哈哈~~,进行了认证了以后就能建网站应用(这里要特别注意,会配置回调授权地址,也就是redirect_uri这个参数,后面会用到)了,这里会有微信给的appid和appsecret。

2.微信第三方扫码登录的步骤图如下:

3.获取code的值:在PC端打开

注意修改相关对应的值,这里我被redirect_uri和scope坑了好久,不过后来我们一前端去配置了下,给了个scope=snsapi_login(PC端这个参数必须是这个,而不是snsapi_base和snsapi_userinfo)权限的appid,之前会一直提示:

如果出现这个,就是你的appid没有权限,如果出现如下:

说明你的网站配置有问题,请查看配置。

以上如果访问成功了,就会出现如下二维码:

4.使用你的微信扫码并确认登录,微信会检验授权,检验完成了以后会进行跳转(会跳转到你的redirect_uri)

5.跳转过来以后会获取到一个code值和state值(state值由你自己设置)

redirect_uri?code=CODE&state=STATE

如果错误则没有code值。

封装的后端代码如下:

6.通过code值可以获得access_token:直接上代码吧

以上是通过code和type的值来获取access_token和用户的相关信息(话说我将两者写到了一起,而且是以JSON的格式返回给了前端)

这里要注意openid,这个字段会记录到你本地数据库,会有个你本地的user_id和它对应,从而知道你本地的哪个用户是微信登录的。(这里涉及到数据表的设计)

保存到本地通过自己封装好的方法.后面要获取你本地用户的相关信息就可以通过openid来获取~!

如果出现错误!

则表示你的access_token过期了(话说是有7200s的有效时间的)。那我们就再重新获取一次code,再获取一次access_token.

或者我们想单独获取用户的相关信息时,可以封装以下函数:

token就是你通过code获取到的access_token值。

7.通过access_token调用用户信息

如上图所封装好的函数一样,通过getUrl的可以获取到用户的相关信息

如果你获取不到用户的相关信息,而是返回了错误

则表示你的access_token过期了,重新获取一下!

会得到如下信息:

这些数据是你微信上的相关用户信息,你本地需要的都在这.

到这里,我们的微信第三方扫码登录基本完成!

也是研究了好久,这里面还是有些困难的~如果还有哪里不足,请大神指出哦,会进行相关的修改~!

你可能感兴趣的文章
【C#】利用Conditional属性完成编译忽略
查看>>
DirectX11 三种光照组成对比
查看>>
DirectX11 指定材质
查看>>
DirectX11 点光
查看>>
DirectX11 光照演示示例Demo
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Node.js-模块和包
查看>>
JavaScript实现页面无刷新让时间走动
查看>>
前端设计之特效表单
查看>>
Java的时间操作玩法实例若干
查看>>
JavaScript:时间日期格式验证大全
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
(python版)《剑指Offer》JZ28:数组中出现次数超过一半的数字
查看>>
(python版)《剑指Offer》JZ30:连续子数组的最大和
查看>>
(python版)《剑指Offer》JZ02:替换空格
查看>>
管理用户状态——Cookie与Session
查看>>
通过Spring Boot三分钟创建Spring Web项目
查看>>
Java编程基础:static的用法
查看>>
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>