网站接入微信扫码登陆并获取用户基本信息(微信开放平台)

如今的网站基本都接入微信登录了,就好像下面这样的。php

clipboard.png

只须要用微信扫一下二维码,这个网站就能够展现你的微信昵称和头像,免去注册帐号和输入密码登陆的步骤,还免去设置头像和昵称的步骤,因此是挺方便的。html

那么如何把本身的网站接入这个呢?首先我们得先在微信开放平台注册帐号而且建立一个网站应用,等待审核经过后就能够得到Appid和AppSecretbingqie而且还要设置回调域名,这个很少说。api

首先咱们根据官方文档的流程来作:浏览器

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

经过以上的接口请求CODE微信

请求参数:app

clipboard.png

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=STATEspa

那么这两个参数,就进入和第二步须要用到CODEcode

第二步:经过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"}

clipboard.png

成功截图:

clipboard.png

那么,openid都获取到了access_token也获取到了,能干啥?

固然是获取用户基本信息啊,直接调用接口就行。

第三步:获取用户基本信息
https://api.weixin.qq.com/sns/userinfo?access_token=获取到的ACCESS_TOKENQ&openid=获取到的OPENID

而后访问,就是一堆用户基本信息了。

clipboard.png

头像,昵称,城市,国家,unionid

做者:tanking

相关文章
相关标签/搜索