18910140161

PHP中微信公众平台实现获取用户OpenID的方法

顺晟科技

2021-06-16 10:56:53

462

我们在开发微信公众号页面时,在里面的页面需要获取到用户信息。

按道理来说,网页是无法获取到微信用户到信息,但是只有从公众号打开到时候,就可以获取到了。

我们来看一下流程。

用户点击微信自定义菜单视角类型按钮后,微信客户端将会打开开发者在按钮中填写的全球资源定位器(统一资源定位符)值(即网页链接),

达到打开网页的目的,但是视角不能获取用户的openid,需要使用微信"网页授权获取用户基本信息"接口结合使用,获得用户的登入个人信息。

具体方法:

1、配置网页授权回调域名,如www.oicqzone.com

2、公众号的第三方登录网页

请求页面:http://www .oicqzone。请访问Microsoft.com/getcodeurl。服务器端编程语言(Professional Hypertext Preprocessor的缩写)

?服务器端编程语言(专业超文本预处理器的缩写)

if(isset($ _ SESSION[' user ']){

print _ r($ _ SESSION[' user ']);

退出;

}

$APPID='公众号在微信的appid ';

$ REDIRECT _ URI=' http://www .oicqzone。com/callback。PHP ';

$ scope=' snsapi _ base

//$ scope=' SNS API _ user info ';//需要授权

$ URL=' https://打开。微信。QQ。com/connect/oauth 2/authorize?appid=' .$APPID .重定向_uri=' .urlencode($REDIRECT_URI).response_type=codescope=' .$scope .状态=' .$state .#微信_重定向;

标题(' Location: ' .$ URL);

3、第三方网页的回跳全球资源定位器(统一资源定位符)中,首先从请求中取得代码,然后根据密码进一步换取信息和access_token,然后就可以根据信息和access_token调用微信的相关接口查询用户信息了。

回调页面:http://www .艾克斯。com/callback。服务器端编程语言(Professional Hypertext Preprocessor的缩写)

?服务器端编程语言(专业超文本预处理器的缩写)

$appid='公众号在微信的appid ';

$secret='公众号在微信的app secret ';

$ code=$ _ GET[' code '];

$ get _ token _ URL='https://api.weixin.qq.com/sns/oauth2/access_token?appid=' .$appid .秘密=' .$秘密。代码='。$代码grant _ type=authorization _ code ';

$ ch=curl _ init();

curl_setopt($ch,CURLOPT_URL,$ get _ token _ URL);

curl_setopt($ch,CURLOPT_HEADER,0);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch,CURLOPT _ CONNECTTIMEOUT,10);

$ RES=curl _ exec($ ch);

curl _ close($ ch);

$json_obj=json_decode($res,true);

//根据信息和access_token查询用户信息

$ access _ token=$ JSON _ obj[' access _ token '];

$ open id=$ JSON _ obj[' open id '];

$ get _ user _ info _ URL='https://api.weixin.qq.com/sns/userinfo?access_token=' .$access_token .openid=' .$openid .lang=zh _ CN ';

$ ch=curl _ init();

curl_setopt($ch,CURLOPT_URL,$ get _ user _ info _ URL);

curl_setopt($ch,CURLOPT_HEADER,0);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch,CURLOPT _ CONNECTTIMEOUT,10);

$ RES=curl _ exec($ ch);

curl _ close($ ch);

//解析数据

$user_obj=json_decode($res,true);

$ _ SESSION[' user ']=$ user _ obj;

print _ r($ user _ obj);

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航