开放平台无跳转微信登录 PHP版

  • index.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>测试微信扫码登陆</title>
  8. </head>
  9. <body>
  10. <img id="qrcode" src="" />
  11. <h1 id="code"></h1>
  12. <p style="font-weight: 600">使用您的应用测试?</p>
  13. <p>您的AppID:<input type="text" id="appid" /></p>
  14. <p>开放平台设置的授权回调域(以http/https开头):<input type="text" id="redirectUri" /></p>
  15. <p><input type="button" value="测试" id="test" /></p>
  16. <a href="https://github.com/yi-ge/weixin-login-php"><img style="position: absolute; top: 0; right: 0; border: 0;" src="data:image/png;base64,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" alt="Fork me on GitHub"></a>
  17. <script src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script>
  18. <script>
  19. function GetQueryString(name) {
  20. var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
  21. var r = window.location.search.substr(1).match(reg);
  22. if(r!=null)return unescape(r[2]); return '';
  23. }
  24. $(function () {
  25. var getCode = function (uuid, last) {
  26. $.ajax({
  27. type: "GET",
  28. url: window.location.origin + "/weixin-login-php/weixin.php?uuid=" + uuid + (last ? '&last=' + last : ''),
  29. dataType: "json",
  30. cache: !1,
  31. timeout: 6e4,
  32. success: function (data) {
  33. if (data.status === 405) {
  34. $('#code').text('登陆成功,code = ' + data.result.code)
  35. } else if (data.status === 404) {
  36. $('#code').text(data.msg.title + ', ' + data.msg.content)
  37. getCode(uuid, data.result.wxErrCode)
  38. } else if (data.status === 403) {
  39. $('#code').text(data.msg.title + ', ' + data.msg.content)
  40. getCode(uuid, data.result.wxErrCode)
  41. } else if (data.status === 500) {
  42. getUUID()
  43. } else {
  44. setTimeout(function () {
  45. getCode(uuid)
  46. }, 2000)
  47. }
  48. },
  49. error: function () {
  50. setTimeout(function () {
  51. getCode(uuid)
  52. }, 2000)
  53. }
  54. })
  55. }
  56. var getUUID = function (uuid) {
  57. $.ajax({
  58. type: "GET",
  59. url: window.location.origin + "/weixin-login-php/weixin.php?appid=" + GetQueryString("appid") + "&redirect_uri=" + GetQueryString("redirect_uri"),
  60. dataType: "json",
  61. cache: !1,
  62. timeout: 6e4,
  63. success: function (data) {
  64. if (data.status === 1) {
  65. var uuid = data.result.wxUUID
  66. $('#qrcode').attr('src', data.result.imgData)
  67. getCode(uuid)
  68. } else {
  69. setTimeout(function () {
  70. window.location.reload();
  71. }, 2000)
  72. }
  73. },
  74. error: function () {
  75. setTimeout(function () {
  76. window.location.reload();
  77. }, 2000)
  78. }
  79. })
  80. }
  81. $("#appid").val(GetQueryString("appid"))
  82. $("#redirectUri").val(GetQueryString("redirect_uri"))
  83. $("#test").click(function () {
  84. window.location.href = window.location.origin + "/weixin-login-php/index.html?appid=" + $("#appid").val() + "&redirect_uri=" + $("#redirectUri").val();
  85. })
  86. getUUID()
  87. });
  88. </script>
  89. </body>
  90. </html>
  • index.php
  1. <?php
  2. header('Content-Type: application/json; charset=utf-8');
  3. header('Access-Control-Allow-Headers: Authorization, DNT, User-Agent, Keep-Alive, Origin, X-Requested-With, Content-Type, Accept, x-clientid');
  4. header('Access-Control-Allow-Methods: PUT, POST, GET, DELETE, OPTIONS');
  5. header('Access-Control-Allow-Origin: *');
  6. if (!empty($_GET['uuid'])) {
  7. $ch = curl_init();
  8. curl_setopt($ch, CURLOPT_URL, 'https://long.open.weixin.qq.com/connect/l/qrconnect?uuid=' . $_GET['uuid'] . (empty($_GET['last']) ? '' : '&last=' . $_GET['last']));
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10. curl_setopt($ch, CURLOPT_HEADER, 0);
  11. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
  12. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Cache-Control: no-cache', 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3522.0 Safari/537.36'));
  13. $output = curl_exec($ch);
  14. curl_close($ch);
  15. $preg = '/window.wx_errcode=(.*?);w/i';
  16. $preg1 = "/window.wx_code='(.*?)';/i";
  17. preg_match_all($preg, $output, $res);
  18. $wxErrCode = $res[1][0];
  19. switch ($wxErrCode) {
  20. case 405:
  21. preg_match_all($preg1, $output, $res);
  22. $wxCode = $res[1][0];
  23. $r = array(
  24. 'status' => 405,
  25. 'msg' => '登陆成功',
  26. 'result' => array(
  27. 'code' => $wxCode,
  28. ),
  29. );
  30. break;
  31. case 404:
  32. $r = array(
  33. 'status' => 404,
  34. 'msg' => array(
  35. 'title' => '登陆成功',
  36. 'content' => '请在微信中点击确认即可登录',
  37. ),
  38. 'result' => array(
  39. 'wxErrCode' => $wxErrCode,
  40. ),
  41. );
  42. break;
  43. case 403:
  44. $r = array(
  45. 'status' => 403,
  46. 'msg' => array(
  47. 'title' => '您已取消此次登录',
  48. 'content' => '您可再次扫描登录,或关闭窗口',
  49. ),
  50. 'result' => array(
  51. 'wxErrCode' => $wxErrCode,
  52. ),
  53. );
  54. break;
  55. case 402:
  56. case 500:
  57. $r = array(
  58. 'status' => 500,
  59. 'msg' => '需要重新获取uuid',
  60. );
  61. break;
  62. case 408:
  63. $r = array(
  64. 'status' => 408,
  65. 'msg' => '需要再次请求',
  66. );
  67. break;
  68. }
  69. echo json_encode($r);
  70. } else {
  71. $ch = curl_init();
  72. $appid = empty($_GET['appid']) ? 'wx827225356b689e24' : $_GET['appid'];
  73. $redirect_uri = empty($_GET['redirect_uri']) ? 'https://qq.jd.com/' : $_GET['redirect_uri'];
  74. $redirect_uri = urlencode(iconv('gb2312', 'UTF-8', $redirect_uri));
  75. curl_setopt($ch, CURLOPT_URL, 'https://open.weixin.qq.com/connect/qrconnect?appid=' . $appid . '&scope=snsapi_login&redirect_uri=' . $redirect_uri . '&state=&login_type=jssdk&self_redirect=default');
  76. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  77. curl_setopt($ch, CURLOPT_HEADER, 0);
  78. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
  79. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Cache-Control: no-cache', 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3522.0 Safari/537.36'));
  80. $output = curl_exec($ch);
  81. curl_close($ch);
  82. $preg = '/src="\/connect\/qrcode\/(.*?)" \/>/i';
  83. preg_match_all($preg, $output, $res);
  84. $uuid = $res[1][0];
  85. if (isset($_GET['img'])) { // 不推荐 - 如果设置了img参数,则返回图片的下载地址,但此地址无法解决Chrome70不信任腾讯域名证书的问题
  86. $r = array('status' => 1, 'result' => array('wxUUID' => $uuid, 'imgURL' => 'https://open.weixin.qq.com/connect/qrcode/' . $uuid));
  87. } else {
  88. $ch = curl_init();
  89. curl_setopt($ch, CURLOPT_URL, 'https://open.weixin.qq.com/connect/qrcode/' . $uuid);
  90. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  91. curl_setopt($ch, CURLOPT_HEADER, 0);
  92. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
  93. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Cache-Control: no-cache', 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3522.0 Safari/537.36'));
  94. $output = curl_exec($ch);
  95. curl_close($ch);
  96. $r = array('status' => 1, 'result' => array('wxUUID' => $uuid, 'imgData' => 'data:image/jpeg;base64,' . base64_encode($output)));
  97. }
  98. echo json_encode($r);
  99. }


评论 1

发表评论

Top