1、微信开放平台 网站应用 开通微信登录 取得Appid和秘钥
2、配置回调域名 注意(只要域名 不要完整路径)(查看应用详情中滑到最下面)
3、后端代码
<?php
namespace YOUR_NAMESSPACE;use YOUR_BASE_CONTROLLER;
use think\Controller;
use UserModel;
use think\Db;
use think\helper\Hash;class Redirect extends Base
{private $wx_appid =YOUR_APPID;private $wx_secret =YOUR_SERCET;//微信开放平台网站应用secret//生成后台测试访问链接 后端开发时 可以直接访问该方法生成的链接
//配置没问题的话会跳转到微信登录二维码public function loginWxCode(){$url = 'https://open.weixin.qq.com/connect/qrconnect?';//回调地址 用户扫码成功并确认登录 微信会二维码页面回访问该地址 逻辑处理也放在该地址中//注意 该地址域名要和微信开放平台上配置的授权回调域一致$redirect_uri =YOU_REDIRECT_URI;$arr = array('appid' => $this->wx_appid,'redirect_uri' => $redirect_uri,'response_type' => 'code','scope' => 'snsapi_login','state' => 1,);$url = $url . http_build_query($arr) . '#wechat_redirect';echo $url;}/*** Notes: 微信PC登录配置 前端访问该接口 获取配置数据 拼接访问链接 * (拼接链接可参考上个接口返回的完整链接)*/public function wxLoginConfig($data = ''){$result = ['appid' => $this->wx_appid,'redirect_uri' =>YOUR_REDIRECT_URL,'response_type' => 'code','scope' => 'snsapi_login'];return ApiReturn::r(1, $result, '获取成功'); //返回给客户端token信息}/*** Notes: PC端微信扫码登录回调地址*/public function wx_notify($data = ''){session('wx_scaninfo', null);$code = $_GET['code'];//微信回调会在链接上带上code 直接用get 方法获取到用就行了//微信回调会在链接上带上state //直接用get 方法获取到用就行了 该参数是你传给微信 微信原样返回的$state = $_GET['state'];if ($code) {//获取用户信息$uri = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->wx_appid . '&secret=' . $this->wx_secret . '&code=' . $code . '&grant_type=authorization_code';$result = file_get_contents($uri);$authInfo = json_decode($result, true);// $authInfo 就是用户信息 可以打印出来看看(后端直接访问链接跳转) session('wx_authInfo', $authInfo);//这里可以写你的业务逻辑//echo "<script>window.close(); </script>";exit;}/*** Notes: 用户扫码后 前端轮询该接口 判断用户是否扫码成功 用户授权成功 前端自行关闭二维码页面*/public function scan_info(){$result = session('wx_scaninfo');if ($result) {session('wx_scaninfo', null);echo json_encode($result);exit;} else {echo json_encode(['code' => 0]);exit;}}
}
创作不易 需要鼓励 请支持 一分也可以