PHP微信公众号网页授权
首先域名需要备案并在公众号进行设置域名
1.转到微信用户同意授权返回CODE
2.通过code换取授权appid access_token
3.拉取用户信息
state参数可自定义返回信息
snsapi_base 不需要用户同意授权只获取openid
snsapi_userinfo 需要用户同意 获取openid 和 用户资料
$info="luyis";
$appid="*****";//公众号appid
$myurl="http://".$_SERVER['SERVER_NAME']."/index/weixin/open";//code返回地址
$wxurl='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$myurl.'&response_type=code&scope=snsapi_userinfo&state='.$info.'#wechat_redirect';//url 参数
header('Location:'.$wxurl);
$appid="*****";
$key="88888";
$code = $_GET['code'];
if ($code) {
//初始化
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$key&code=$code&grant_type=authorization_code");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
}
$oauth2 = json_decode($output,true);
//如果code失效重新获取
if(empty($oauth2["access_token"])){
$urls ="http://".$_SERVER['SERVER_NAME']."/index/weixin/index?qrcode=".$_GET['state'];
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='$urls'";
echo "</script>";
}
$access_token = $oauth2["access_token"];
//openid
$openid = $oauth2['openid'];
//第二步:根据全局access_token和openid查询用户信息
$get_user_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
$userinfo = $this->http_curl($get_user_info_url);
2019-09-04