您的位置:首页 > 移动开发 > 微信开发

PHP微信第三方扫码登录技术问题

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

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



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

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



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

https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

注意修改相关对应的值,这里我被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过期了,重新获取一下!

会得到如下信息:



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

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

也是研究了好久,这里面还是有些困难的~如果还有哪里不足,请大神指出哦,会进行相关的修改~!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息