微信网页授权登录(非公众号第三方平台)
之前做的微信登录因为传错了一个代码,只能在公众号里面登录,不能在订阅号或者联系人的链接里面登录。 经过仔细研究,阅读文档,才发现这个原因。
这些代码可以出现授权页
$appid = 'xxxxxxxxxxxxxxxxx';
$redirect_uri = urlencode('http://www.xxx.com/xxx.php?act=xxxx');
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$redirect_uri.'&response_type=code&scope=snsapi_userinfo&state='.rand().'&connect_redirect=1#wechat_redirect';
header('location:'.$url);
这些代码可以获取到用户信息
//获取微信用户详情
function wxapi_get_user_info($appid,$response_type,$code)
{
//第二步:通过code获取access_token
$code = empty($_GET['code']) ? '' : trim($_GET['code']);
if(!empty($code))
{
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$response_type&code=$code&grant_type=authorization_code";
$result = https_request($url);
$jsoninfo = json_decode($result, true);
//print_r($jsoninfo);
if(!empty($jsoninfo["access_token"]) && !empty($jsoninfo["openid"]) ) {
$access_token = $jsoninfo["access_token"];
$openid = $jsoninfo["openid"];
}else{
echo '页面链接失效,请重新操作';
die();
}
//echo '<br>'.$access_token ;
//检验授权凭证(access_token)是否有效
$url2 = "https://api.weixin.qq.com/sns/auth?access_token=$access_token&openid=$openid";
$result2= https_request($url2);
$jsoninfo2 = json_decode($result2, true);
//print_r($jsoninfo2);
if($jsoninfo2['errmsg'] == 'ok')
{
//获取用户个人信息(UnionID机制)
$url3 = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid";
$result3= https_request($url3);
$jsoninfo3 = json_decode($result3, true);
//echo '<pre>';
//print_r($jsoninfo3);
return $jsoninfo3;
}
}
}
if (!function_exists('https_request')) {
function https_request($url, $data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
}