1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > PHP微信公众号网页授权登录 扫码登录 获取用户基本信息

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

时间:2024-03-06 09:20:53

相关推荐

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

前言

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

1、通过微信开放平台

2、通过认证的微信服务号

3、通过认证的微信订阅号

4、通过微信小程序曲线救国

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

流程

1、获取code

2、获取access_token

3、获取用户基本信息

获取code

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

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

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

配置例子:

https://open./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

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

例如你的服务器域名是,你的代码放在服务器的wx目录下,那么你的redirect_uri应该是

/wx/getcode.php

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

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

获取access_token

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

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

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

下面getcode.php页面的:

<?phpheader("Content-type:text/html;charset=utf-8");$code = $_GET["code"];$appid = "你公众号的APPID";$appsecret = "你公众号的APPSECRET";$url = "https://api./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./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等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。