网站接入微信扫码登录并获取用户基本信息(微信开放平台)
现在的网站基本都接入微信登陆了,就好像下面这样的。
只需要用微信扫一下二维码,这个网站就可以展示你的微信昵称和头像,免去注册账号和输入密码登录的步骤,还免去设置头像和昵称的步骤,所以是挺方便的。
那么如何把自己的网站接入这个呢?首先咱们得先在微信开放平台注册账号并且创建一个网站应用,等待审核通过后就可以获得Appid和AppSecretbingqie并且还要设置回调域名,这个不多说。
首先我们根据官方文档的流程来做:
第一步:请求CODE
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
通过以上的接口请求CODE
请求参数:
OK参数说的明白,咱就开始写代码了。
新建login.php
<?php //生成state参数,利用MD5对时间戳进行加密生成32位数的state,也是为了简单哈哈,自己用其他方法生成吧 //时间戳 $time = time(); //对时间戳进行加密,就是state $state = MD5($time); //APPID $appid = "你的APPID"; //redirect_uri回调地址,也就是请求完了之后,咱们需要跳转的地址,我这里直接跳转到我网站的oauth.php的地址,这个文件是 用来下一步获取access_token的 $redirect_uri = "http://www.xxx.com/open/oauth.php"; //scope默认是snsapi_login $scope = "snsapi_login"; //拼接参数进行自动跳转 echo "<script>location.href=\"https://open.weixin.qq.com/connect/qrconnect?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=$scope&state=$state#wechat_redirect\";</script>"; ?>
我们在浏览器访问login.php后,就会生成一个code和携带了我们页面生成的state
即:redirect_uri?code=CODE&state=STATE
那么这两个参数,就进入和第二步需要用到CODE
第二步:通过code获取access_token
获取接口:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
老样子,还是要构建请求参数
上面是有一个oauth.php的
这个文件已经接收到了code,我们就用这个文件构建请求参数
oauth.php
<?php header("Content-type:text/html;charset=utf-8"); //获取login.php传过来的code $code = $_GET["code"]; //通过接口获取access_token //构造请求参数 $appid = "你的APPID"; $appsecret = "你的APPSecret"; //拼接参数,自动跳转 echo "<script>location.href=\"https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code\";</script>"; ?>
如果成功,那么就会返回一个JSON数据
"access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE", "unionid": "unionid" }
否则:
{"errcode":40029,"errmsg":"invalid code"}
成功截图:
那么,openid都获取到了access_token也获取到了,能干啥?
当然是获取用户基本信息啊,直接调用接口就行。
第三步:获取用户基本信息
https://api.weixin.qq.com/sns/userinfo?access_token=获取到的ACCESS_TOKENQ&openid=获取到的OPENID
然后访问,就是一堆用户基本信息了。
头像,昵称,城市,国家,unionid
作者:tanking
相关推荐
浪味仙 2019-10-21
zonehh 2019-06-30
xjp 2018-02-09
戴翔的技术 2019-09-01
rongjiang00 2014-12-02
BitTigerio 2017-12-06