parent
fbbaf59b01
commit
f6bf5133fc
@ -0,0 +1,105 @@ |
||||
<?php |
||||
/* |
||||
* 微信网关代理 |
||||
* https://wechat.1zh888.com/transfer.php |
||||
* 把程序中的 |
||||
* https://open.weixin.qq.com/connect/oauth2/authorize (mobile) |
||||
* 或 |
||||
* https://open.weixin.qq.com/connect/qrconnect (pc) |
||||
* 换成 https://wechat.1zh888.com/transfer.php |
||||
* 并在后面拼上 &device=mobile 或 &device=pc |
||||
* **/ |
||||
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'] . '/transfer.php'), |
||||
'&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 |
||||
])); |
||||
} |
||||
} |
||||
?> |
Loading…
Reference in new issue