php获取微信uninoid_微信公众平台|通过openId获取用户信息(unionId)

微信公众平台|通过openId获取用户信息(unionId)

由于微信公众平台与微信开放平台的性质不同,所以它们对应用户的openId也是不同的,乃至不同公众号之间也是不一样的。相信很多开发者对此也吐糟过很多次了吧,小编也是无力吐槽了。之前完全没接触过微信开发,一开始时完全被这两个平台搞懵了,后面查了资料才搞懂是怎么回事。

进入主题,通过openId获取用户信息(unionId),前提条件是微信公众号要与微信开放平台进行绑定。

其实也就是http请求,贴上代码(小编写的这个类后面应该会慢慢更新,就看后面有没有开发需求啦,哈哈)

// +----------------------------------------------------------------------

// | 微信公众平台开发

// | 1.发送模板短信

// | 2.获取微信用户信息

// | 3...

// +----------------------------------------------------------------------

// | Copyright (c) 2016 http://www.lrfun.com All rights reserved.

// +----------------------------------------------------------------------

// | Author: lrfun // +----------------------------------------------------------------------

// | Date: 2016-10-14

// +----------------------------------------------------------------------

Class WeChat{

protected $appid;

protected $secrect;

protected $accessToken;

function __construct(){

$this->appid = "xxx";

$this->secrect = "xxx";

$this->accessToken = $this->getAccessToken();

}

/***

* 获取access_token

* @return

**/

private function getAccessToken(){

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->secrect;

$res = json_decode($this->httpRequest($url),true);

//$access_token = $res['access_token'];

return $res['access_token'];

}

/***

* POST或GET请求

* @url 请求url

* @data POST数据

* @return

**/

private function httpRequest($url, $data = ""){

$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)){//判断是否为POST请求

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;

}

/***

* 发送模板短信

* @data 请求数据

* @return

**/

public function sendTemplateMessage($data = ""){

$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$this->accessToken;

$result = $this->httpRequest($url, $data);

return $result;

}

/***

* 通过openId获取用户信息

* @openId

* @return

**/

public function getUserInfo($openId){

$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->accessToken."&openid=".$openId."&lang=zh_CN";

$data = $this->httpRequest($url);

return $data;

}

}

//调用代码

require_once('WeChat.class.php');

$openId = "oSKzJveryWmVaso7ylk3b-frjuo";

$wechat = new WeChat();

$info = $wechat->getUserInfo($openId);

print_r($info);

那么获取到unionId有什么用呢?unionId是真正的唯一标识,无论是在不同的公众号、开饭平台上微信用户的unionId都是一样的。

下面就举一个例子,移动端与PC端的微信登录功能,移动端是授权公众号登录,而PC端是扫码授权开放平台登录,由于两个平台的openId不一致,所以要通过unionId保持账号一致。

公众平台--> openId --> unionId

PS:如何获取openId,小编之前有写过一篇文章:【传送门】

上一篇:微信公众平台开发|发送模板消息

下一篇:微信授权登录获取openId和unionId

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值