You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
<?php
|
|
|
|
// 获取上一个页面的 URL
|
|
session_start();
|
|
$referer = $_SESSION['prev_url'];
|
|
// unset($_SESSION['prev_url']);
|
|
|
|
$appid = 'wx1663d2c6a7937c78';
|
|
$appsecret = '979d165d51759c3f1fbb357747b3311d';
|
|
$redirect_uri = 'https://shop.heavenk.com/mobile/blank.php'; // 回调URL
|
|
$template_id = '5JCt5gNGM7sfwWnRqwWsjH138DixCFJ7sPEbToYQAmQ';
|
|
|
|
|
|
// 获取授权 code
|
|
if (!isset($_GET['code'])) {
|
|
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid . '&redirect_uri=' . urlencode($redirect_uri) . '&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';
|
|
header('Location: ' . $url);
|
|
exit;
|
|
}
|
|
|
|
// 获取 access_token 和 openid
|
|
$code = $_GET['code'];
|
|
if ($code != null){
|
|
// var_dump($code);
|
|
} else {
|
|
var_dump("code is null");
|
|
} // code已经成功获取到
|
|
|
|
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code';
|
|
$response = file_get_contents($url);
|
|
echo $response;
|
|
$data = json_decode($response, true);
|
|
echo $data;
|
|
if (!$data || !isset($data['access_token']) || !isset($data['openid'])) {
|
|
// 授权失败
|
|
echo '授权失败,请重试';
|
|
exit;
|
|
}
|
|
|
|
// 获取用户信息
|
|
$access_token = $data['access_token'];
|
|
$openid = $data['openid'];
|
|
$url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN';
|
|
$response = file_get_contents($url);
|
|
$userinfo = json_decode($response, true);
|
|
if (!$userinfo || !isset($userinfo['openid'])) {
|
|
// 获取用户信息失败
|
|
echo '获取用户信息失败,请重试';
|
|
exit;
|
|
}
|
|
|
|
$_SESSION['openid'] = $openid;
|
|
$_SESSION['access_token'] = $$access_token;
|
|
// echo $openid;
|
|
|
|
header('Location: ' . $referer);
|
|
exit;
|
|
// 用户授权成功,这里可以将用户信息保存到数据库中,或者进行其他操作
|
|
// var_dump($userinfo);
|
|
|
|
?>
|