版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1333706
OpenID
与 UnionID
的使用,以下为微信官方文档的的介绍,请注意区分:OpenID
(加密后的微信号,每个用户对每个公众号的 OpenID
是唯一的。对于不同公众号,同一用户的 OpenID
不同)。OpenID
获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。open.weixin.qq.com
)绑定公众号后,才可利用 UnionID
机制来满足上述需求。OpenID
是普通用户的标识,对当前开发者帐号唯一。一个 OpenID
对应一个公众号。UnionID
是用户统一标识。针对一个 微信开放平台帐号 下的应用,同一用户的 UnionID
是唯一的。OpenID
区分,而需要用 UnionID
区分。所以:当你出现这种情况,可以参考下面的指导进行
unionID
数据的后期获取 获取用户基本信息(UnionID机制)
/**
* 根据用户已获得的 openID 获取其他信息 (主要为 unionID)
*/
public function getUnionidByOpenid($openID = ''){
$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="
.$this->getaccesstoken()
."&openid=".$openID."&lang=zh_CN";
$jsonRes = $this->http_get($url);
if ($jsonRes){
$arrRes = json_decode($jsonRes, true);
return $arrRes['unionid'];
}else{
return '';
}
}
网站应用开发
的简要功能介绍 为了保证同一个开发账号下对应微信用户的 UnionID 绑定使用,需要在下面的列表中绑定对应的公众号/服务号,文档中介绍一般要满足微信支付功能
access_token
时序图'WEIXIN_LOGIN' => array(
// 微信开放平台 使用微信帐号登录App或者网站 配置信息
'OPEN_APPID' => 'wxbd961b2a6b7b2963', //应用 AppID
'OPEN_APPSECRET' => 'e6xxxxxxxxxxxxxxxxxxxxe90',//应用 AppSecret
'OPEN_CALLBACKURL' => 'http://www.52zhenmi.com/Home/Login/wxBack', //微信用户使用微信扫描二维码并且确认登录后,PC端跳转路径
),
public function wxIndex(){
//--微信登录-----生成唯一随机串防CSRF攻击
$state = md5(uniqid(rand(), TRUE));
$_SESSION["wx_state"] = $state; //存到SESSION
$callback = urlencode($this->callBackUrl);
'https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect';
$wxurl = "https://open.weixin.qq.com/connect/qrconnect?appid="
.$this->appID."&redirect_uri="
.$callback."&response_type=code&scope=snsapi_login&state="
.$state."#wechat_redirect";
header("Location: $wxurl");
}
public function wxBack(){
if($_GET['state']!=$_SESSION["wx_state"]){
echo 'sorry,网络请求失败...';
exit("5001");
}
$url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appID.'&secret='.$this->appSecret.'&code='.$_GET['code'].'&grant_type=authorization_code';
$arr = curl_get_contents($url);
//得到 access_token 与 openid
$url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN';
$user_info = curl_get_contents($url);
$this->dealWithWxLogin($user_info);
}
/**
* 根据微信授权用户的信息 进行下一步的梳理
* @param $user_info
*/
public function dealWithWxLogin($user_info){
//TODO 数据处理
var_dump($user_info);
die;
}
openID
和 UnionID
可存储数据库进行后期业务的处理.