第一步:微信开放平台账户申请
网址:微信开放平台
1.首先我们要做的就是进入到微信开放平台申请一个开放平台账户,获得资质!
:注册需要准备营业执照、1-2个工作日审批、300元认证费
:注册之后,会给你提供微信id和微信密钥
第二步:申请网站应用名称
注册后进入管理中心>网站应用>创建网站应用:
审核通过后,列表就会可以查看到这个网站应用,点击查看可以获取到appId 和appSecret了。
第三步:用网站应用里的appId 调用微信二维码 下面是代码(控制器方法)
//请求登录二维码
public function getLoginImg()
{
//请求登录二维码
$appId = '***************';//你的appId
//这里强调一下 网站应用的授权回调域只能是域名 在代码中调用二维码时写入域名里具体的回调接口
//比如我这个 网站应用里的授权回调域写的是https://test.huin.com 但是请求二维码时要加上具体的回调接口:/admin/login/wechat
$redirectUri = 'https://test.huin.com/admin/login/wechat';//我这个地址是无效的 换成你们自己的
$redirectUri = urlencode($redirectUri); // 对URL进行编码
$scope = 'snsapi_login'; // 网页授权获取用户基本信息 固定的
//这个状态你设置的是什么 回调给你的就是什么 可以用来区分那个模块的二维码 (比如我要做绑定后台账号 绑定的二维码我设置state=1 登录二维码我设置state=2 这个就可以很好区分开了)
$state = 2; // 可自定义,用于保持请求和回调的状态
// 构造授权URL //这个地址是固定的可以直接用
$url = "https://open.weixin.qq.com/connect/qrconnect?appid={$appId}&redirect_uri=
{$redirectUri}&response_type=code&scope={$scope}&state={$state}#wechat_redirect";
// 重定向到授权URL(也就是跳转到展示二维码的页面)
header("Location: {$url}");
exit;
}
请求出来二维码后手机微信扫描后会调到这个页面
点击允许后会带着code及你设置的state 调用回调域接口进行处理 如果是我的代码就会调用到这个接口【https://test.huin.com/admin/login/wechat】
第四步:回调处理 代码(控制器方法)
//授权回调接口
public function wechat()
{
//回调到这个接口会带给你 code码和上一段代码中的state 【state你之前设置的是什么回调给你的就是什么】
$code = $_GET['code']; // 获取code
$state = $_GET['state']; // 获取code
//这就是你网站应用里申请的appId appSecret
$appId = '***************';
$appSecret = '****************************';
// 构造请求URL 这个地址是固定的 可以直接用
$tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appId}&secret={$appSecret}&code={$code}&grant_type=authorization_code";
// 发送请求并获取结果
$response = file_get_contents($tokenUrl);
$data = json_decode($response, true);
// 提取access_token和openid openid是唯一的可以拿来绑定后台账号 或者直接登录
$accessToken = $data['access_token'];
$openid = $data['openid'];
}
网站应用审核通过后其实就两步:
一 是通过第一个方法使用appId 调用二维码
二 手机授权后带这个code码和state 请求到你的回调域接口 这个接口就可以拿接收到的code和你网站应用上的appid,appSecret 请求这个用户的唯一的openid 拿着这个openid和access_token就可以存数据库 代码也可以做绑定后台账号 下次扫码直接登录