微信公众号获取用户的openid

公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。

对于微信开发者来说获取用户openid是最基本的操作了,然而还是有人不会获取,说报错,其实错误原因主要存在于:
1.你使用的公众号没有权限,一般认证服务号有次权限,部分订阅号也有;
2.在公众号后台没有配置网页授权域名



话不多说,直接上代码:

//设置网络请求配置
public function _request($curl,$https=true,$method='GET',$data=null){
	// 创建一个新cURL资源
	$ch = curl_init();
	
	// 设置URL和相应的选项
	curl_setopt($ch, CURLOPT_URL, $curl);    //要访问的网站
	curl_setopt($ch, CURLOPT_HEADER, false);    //启用时会将头文件的信息作为数据流输出。
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //将curl_exec()获取的信息以字符串返回,而不是直接输出。 

	if($https){
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  //FALSE 禁止 cURL 验证对等证书(peer's certificate)。
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  //验证主机
	}
	if($method == 'POST'){
		curl_setopt($ch, CURLOPT_POST, true);  //发送 POST 请求
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  //全部数据使用HTTP协议中的 "POST" 操作来发送。
	}
	
	
	// 抓取URL并把它传递给浏览器
	$content = curl_exec($ch);
	if ($content  === false) {
	  return "网络请求出错: " . curl_error($ch);
	  exit();
	}
	//关闭cURL资源,并且释放系统资源
	curl_close($ch);
	
	return $content;
}


/**
 * 获取用户的openid
 * @param  string $openid [description]
 * @return [type]         [description]
 */
public function baseAuth($redirect_url){
	
	//1.准备scope为snsapi_base网页授权页面
	$baseurl = urlencode($redirect_url);
	$snsapi_base_url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->appid.'&redirect_uri='.$baseurl.'&response_type=code&scope=snsapi_base&state=YQJ#wechat_redirect';
	
	//2.静默授权,获取code
	//页面跳转至redirect_uri/?code=CODE&state=STATE
	$code = $_GET['code'];
	if( !isset($code) ){
		header('Location:'.$snsapi_base_url);
	}
	
	//3.通过code换取网页授权access_token和openid
	$curl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appid.'&secret='.$this->appsecret.'&code='.$code.'&grant_type=authorization_code';
	$content = $this->_request($curl);
	$result = json_decode($content,true);
	
	return $result;
}
返回的结果如下表,其中的openid就是我们想要的。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值