博客
文档
站点
聚合登录之创建应用篇
聚合登录之获取登录链接
聚合登录之前后端示例代码
聚合登录之常见问题
#### 前端示例代码 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <img src="{$img}"> </body> <!--push.js 推送代码--> <script src="https://ysian.cn/common/js/push.js"></script> <script> <!--请求服务端接口获取数据--> var img = '' var visitor = Math.random().toString(36).substring(10); //data 是扫码成功回调之后,第三方接口回调返回的内容 userPush(visitor, function(data) { if(data.code==200 && data.scan_status=='success') { if(data.token) { localStorage.setItem('token', data.token); } if(data.redirect_uri) { window.location.href = data.redirect_uri; } } }); </script> </html> ``` #### 后端示例代码 ```php public function index() { # 获取二维码 $data = [ 'timestamp' => time(), 'nonce_str' => rand(10000000, 99999999), 'appid' => '20240726UlT', 'state' => base64_encode(''), //前端传参 'image' => 2 ]; $str = ''; ksort($data); foreach ($data as $k => $v) { if (is_array($v)) { $str .= $k . '=' . json_encode($v) . '&'; } elseif (is_bool($v)) { $str .= $k . '=' . ($v ? "true" : "false") . '&'; } elseif($v) { $str .= $k . '=' . $v . '&'; } } $sign = md5($str . 'app_secret=riatQSLFOp'); $data['sign'] = $sign; $ch = curl_init(); // 设置 cURL 选项 curl_setopt($ch, CURLOPT_URL, 'http://ysian.cn/scan/thirdLogin/loginUrl'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行 cURL 请求 $response = curl_exec($ch); // 关闭 cURL curl_close($ch); // 输出响应 $res = json_decode($response, true); return view('index',['url'=>$res['data']['url']]); } ``` #### 扫码回调 用户扫码授权后,会将授权的结果通知三方(创建应用的时候填写通知地址),三方如果使用本项目的websocket通知,请按如下格式返回结果 ```php return json([ 'token' => '22222', // 三方在用户授权后,可颁布一个token,用于证明用户身份。push.js将会储存token:localStorage.setItem('token', data.token); 'code' => 200, // code=200,说明三方已成功得到结果 'redirect_uri' => 'http://www.baidu.com' // 登录成功后跳转的路径 ]); ``` #### 扫码体验地址 [admin.ysian.cn](https://admin.ysian.cn "admin.ysian.cn")