前言

现在微信登录是一个网站、APP的标配,所以微信授权登录是我们应该要掌握的。微信授权登录有4种方式:

1、通过微信开放平台
2、通过认证的微信服务号
3、通过认证的微信订阅号
4、通过微信小程序曲线救国

今天我们就讲解的是微信服务号,通过OAuth2.0机制网页授权登录,获取用户基本信息。

流程

1、获取code
2、获取access_token
3、获取用户基本信息

获取code

通过以下接口即可获得,参数说明:

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

以上链接进行配置后,进行点击访问或跳转。

配置例子:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=你公众号的APPID&redirect_uri=你服务器的接收code的页面链接&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect  

点击允许,将会开始获取code,并且跳转到你的redirect_uri,redirect_uri就是你要接收code的页面。

redirect_uri代码可以这样写,getcode.php

<?php
header("Content-type:text/html;charset=utf-8");
$code = $_GET["code"];
echo $code;
?>

例如你的服务器域名是http://www.abc.com,你的代码放在服务器的wx目录下,那么你的redirect_uri应该是

http://www.abc.com/wx/getcode.php

最后,你在微信内点击上面获取code的链接,那么就会弹窗问你是否允许获取用户信息的了。

允许后,就跳转到getcode.php进行下一步的操作。

获取access_token

通过以下接口可以获得,参数说明:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

上面所需的参数基本都有,APPID、APPSECRET是你服务号的,CODE上面已经获取到了,那么直接请求接口,就能获得access_token了。

下面getcode.php页面的:

<?php
header("Content-type:text/html;charset=utf-8");
$code = $_GET["code"];
$appid = "你公众号的APPID";
$appsecret = "你公众号的APPSECRET";
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code ";
//发起请求
$getopenid = file_get_contents($url);
$getopenid_arr = json_decode($getopenid, true);
$openid = $getopenid_arr["openid"];
$access_token = $getopenid_arr["access_token"];
?>

以上代码直接就可以返回openid和access_token了,接下来直接通过另一个接口,就可以获得用户基本信息。

获取用户基本信息(头像、昵称)

通过以下接口即可获得,参数说明:

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

代码我就不上了,跟上面的请求方式是一样的。

扫码登录实现流程

我们上一步获得的access_token需要进行缓存,因为它是会失效的,我们应该进行缓存到服务器或者数据库,openid也是要储存到数据库。

1、在储存到数据库前,先查询数据库是否存在这个用户的openid,如果有,直接更新这个用户的信息,并且返回登录成功。如果没有,则初始化一条数据进去。

2、然后浏览器轮询这条数据的登录状态,如果用户扫码登录,获得头像和昵称,那么就把头像和昵称更新到刚才初始化的数据当中,如果还没有扫码登录,则一直在轮询,直到扫码登录后就停止轮询,建议设置一个过期时间,防止轮询时间过长造成服务器的不良。

更多学习内容请访问:

怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新)​

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。

PHP微信公众号网页授权登录 扫码登录 获取用户基本信息相关推荐

  1. 微信公众号网页授权登录的超简单实现步骤

    微信开放平台为第三方移动程序提供分享.传播的接口, 使用户可将第三方程序的内容发布给好友或分享至朋友圈, 下面这篇文章主要给大家介绍了关于微信公众号网页授权登录的超简单实现方法, 需要的朋友可以参考下 ...

  2. 微信公众号网页授权代码优化过程(一)

    2019独角兽企业重金招聘Python工程师标准>>> 第一次更新 写本系列博客的主要原因是,我在处理一个微信公众号项目时要做一个网页授权的操作(官方地址是https://mp.we ...

  3. 微信公众号网页授权思路解析及具体代码

    微信公众号网页授权思路解析及具体代码 微信开发文档 实现方式也是两种: 1.静默授权登录 授权登录以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静 ...

  4. 微信公众号网页授权--前端获取code及用户信息(vue)

    前段时间开发微信公众号网页授权,虽然网上已经有很多关于这方面的博客或者教程,但是第一次开发还是遇到挺多坑的,以下分享一下我的踩坑填坑之路. 一.测试号相关配置 首先在你公司申请的测试号上配置好相关信息 ...

  5. 微信公众号网页授权--前端获取code及用户信息(vue)【简单详细版】

    嗨喽大家好,前段时间开发微信公众号网页授权,虽然网上已经有很多关于这方面的博客或者教程,但是第一次开发还是遇到挺多坑的,以下分享一下我的遇到的一些问题的见解,希望对你们有帮助. 一.测试号相关配置 首 ...

  6. 微信公众号网页授权,获取用户信息以及openid -- PHP后台

    微信公众号网页授权,获取用户信息以及openid 这几天做项目,想通过公众号的appid获取用户的openid就,然后在网上查资料,问朋友,最后找到了方法,就是这个网页授权. 起初一直很蒙,这个怎么弄 ...

  7. 微信公众号网页授权时序图

    微信公众号网页授权时序图 公众号网页授权时序图

  8. 微信公众号网页授权40163问题【php】

    微信公众号网页授权40163问题 tp5为例,emmmm-一直报40163或40029问题,翻遍了各大网站都没找到合适我的办法. 如图: 解决之后如图: 因为重定向所以请求了两次code,所以一直报4 ...

  9. php微信授权没有code返回,解决关于微信公众号网页授权获取code参数的问题

    解决关于微信公众号网页授权获取code参数的问题 发布时间:2018-07-24 23:21, 浏览次数:3327 , 标签: code * 在微信网页授权过程中,需要获取code参数,因为我用的是公 ...

  10. 微信公众号 网页授权实现

    绪论: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域名的说明 1.在微信公众号请求用户网页授权之前,开发者需要先到公 ...

最新文章

  1. UOJ#370. 【UR #17】滑稽树上滑稽果 动态规划
  2. redistemplate.opsforvalue 设置不过期_民法典即将实施!“离婚冷静期”倍受关注
  3. 计算机基础知识 音频,计算机基础知识(总结+试题).pdf
  4. Visual Stdio下安装WTL的向导Widzard
  5. linux 脚本中的push,在Linux系统下实现ServerPush(转)
  6. Micro-mvc与springcloud整合
  7. 机器学习:训练集和测试集
  8. Audacity的替代品
  9. 网上资源之WEB前端
  10. 历时三年“鸽王”Filecoin主网上线,分布式存储市场将迎来最强劲敌?
  11. 在Windows 7中使用搜索连接器从您的桌面搜索网站
  12. 神经网络(深度学习)入门学习
  13. 全网最详细金融APP测试功能点-测试用例,详细整理(全)
  14. php连接mysql错误:Call to undefined function mysql_connect()
  15. Bty全国首个PHP宝塔,宝塔Bty分销系统 Bty3安装教程
  16. Android QQ空间(Apad)项目总结(三)---应用UI框架的搭建!!!
  17. 使命召唤5该服务器没有响应,使命召唤5玩不了怎么办 使命召唤5打不开解决办法...
  18. 大型网站技术架构 笔记
  19. google earth engine(GEE)如何在看某一点的经纬度、波段信息
  20. Visio画图-批量处理图片同等大小、等行距、等列距

热门文章

  1. 贝叶斯法则与先验概率,后验概率
  2. 启动服务提示端口已存在的处理方法
  3. LeetCode 661. Image Smoother
  4. 安卓模拟ibeacon_【首发】联接真实与虚拟世界:Estimote Beacons Developer Kit 低功耗蓝牙开发套件...
  5. 微信停止为苹果服务器,在苹果开发者政策限制下微信终于宣布将在近期为iOS版微信增加暗黑模式-...
  6. ImageButton点击替换背景再次点击显示默认图片
  7. Kaggle数据集之电信客户流失数据分析(一)
  8. 成也苹果败也苹果,曾经女首富身价缩水一半
  9. FinalShell使用教程:SSH链接Linux服务器
  10. 2022年,程序员如何选择电脑