在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一个简单的php文件,实现微信网页授权回调域名的代理转发
当下的解决方案是引入一个新的非常简单的应用来作为微信授权的代理服务,可以这么做:
当其它业务需要发起微信授权时,将授权请求先发到proxy.your.com,然后proxy.your.com会把这个请求转发到微信; 唯一的区别在于,在不使用proxy.your.com的时候,你从应用发起微信授权的链接应该是这样的: 后面这个链接跟上面的比: https://github.com/liuyunzhuge/php_weixin_proxy <?php function is_HTTPS() { if (!isset($_SERVER['HTTPS'])) return FALSE; if ($_SERVER['HTTPS'] === 1) { //Apache return TRUE; } elseif ($_SERVER['HTTPS'] === 'on') { //IIS return TRUE; } elseif ($_SERVER['SERVER_PORT'] == 443) { //其他 return TRUE; } return FALSE; } function getDomain() { $server_name = $_SERVER['SERVER_NAME']; if (strpos($server_name, 'www.') !== false) { return substr($server_name, 4); } return $server_name; } $appid = ''; $scope = 'snsapi_login'; $state = ''; $code = ''; $redirect_uri = ''; $device = ''; $protocol = ''; if (is_HTTPS()) { $protocol = 'https'; } else { $protocol = 'http'; } if (isset($_GET['device'])) { $device = $_GET['device']; } if (isset($_GET['appid'])) { $appid = $_GET['appid']; } if (isset($_GET['state'])) { $state = $_GET['state']; } if (isset($_GET['redirect_uri'])) { $redirect_uri = $_GET['redirect_uri']; } if (isset($_GET['code'])) { $code = $_GET['code']; } if (isset($_GET['scope'])) { $scope = $_GET['scope']; } if ($code == 'test') { exit; } if (empty($code)) { $authUrl = ''; if ($device == 'pc') { $authUrl = 'https://open.weixin.qq.com/connect/qrconnect'; } else { $authUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize'; } $options = [ $authUrl, '?appid=' . $appid, '&redirect_uri=' . urlencode($protocol . '://' . $_SERVER['HTTP_HOST'] . '/'), '&response_type=code', '&scope=' . $scope, '&state=' . $state, '#wechat_redirect' ]; //把redirect_uri先写到cookie header(implode('', [ "Set-Cookie: redirect_uri=", urlencode($redirect_uri), "; path=/; domain=", getDomain(), "; expires=" . gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT", time() + 60), "; Max-Age=" + 60, "; httponly" ])); header('Location: ' . implode('', $options)); } else { if (isset($_COOKIE['redirect_uri'])) { $back_url = urldecode($_COOKIE['redirect_uri']); header('Location: ' . implode('', [ $back_url, strpos($back_url, '?') ? '&' : '?', 'code=' . $code, '&state=' . $state ])); } } ?>
|
2022-07-08
2022-08-17
2022-11-06
2022-08-14
2022-08-17
请发表评论