php 微信公众号查询用户

PHP微信公众号:查询用户信息

在微信公众号的开发中,经常需要获取关注该公众号的用户信息,例如昵称、头像、性别等信息。本文将介绍如何使用PHP的WeChat官方SDK来查询微信公众号用户信息。

前提条件

安装PHP扩展`php_curl`和`php_json`。

注册微信公众号并获取`AppID`和`AppSecret`。

已安装composer并配置好autoload。

安装SDK

通过Composer安装WeChatPHPSDK:

shell

composerrequireovertrue/wechat

获取AccessToken

查询用户信息需要先获取AccessToken,可以使用以下代码获取:

php

useOvertrue\Wechat\AccessToken;

$accessToken=newAccessToken([

'appId'=>'YOUR_APP_ID',

'appSecret'=>'YOUR_APP_SECRET',

]);

//获取AccessToken

$token=$accessToken->getToken();

查询用户信息

有了AccessToken,就可以查询用户信息了:

php

useOvertrue\Wechat\User;

$user=newUser($accessToken);

//查询指定用户的信息

$userInfo=$user->get('OPENID');

上述`get`方法将返回一个数组,包含以下字段:

`openid`:用户唯一标识

`nickname`:用户昵称

`sex`:用户性别,1表示男性,2表示女性,0表示未知

`province`:用户所在省份

`city`:用户所在城市

`country`:用户所在国家

`headimgurl`:用户头像URL

`privilege`:用户特权信息

`unionid`:用户在微信开放平台的唯一标识

查询关注者列表

除了查询单个用户信息,还可以查询关注公众号的所有关注者列表:

php

//查询关注者列表

$userList=$user->lists();

`lists`方法将返回一个数组,包含关注者列表,每个关注者信息都包含上述字段。

获得用户授权URL

如果需要获得用户的更详细授权信息,例如邮箱或地址,可以使用以下代码获得授权URL:

php

//获得授权URL

$url=$user->getAuthorizeUrl('SCOPE','STATE');

其中`SCOPE`可以是以下值之一:

`snsapi_base`:不弹出授权页面,直接跳转,只能获取用户OpenID

`snsapi_userinfo`:弹出授权页面,可通过OpenID拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息

`snsapi_privateinfo`:弹出授权页面,可在关注公众号后,获取用户的详细信息,包括姓名、性别、头像、邮箱、国家、地区、语言

`STATE`则是一个自定义的字符串,后续可以使用`getAuthInfo`方法获取授权信息。

获取授权信息

用户授权后,可以通过以下代码获取授权信息:

php

//获取授权信息

$authInfo=$user->getAuthInfo('CODE','STATE');

其中`CODE`是重定向URL中的`code`参数,`STATE`是`getAuthorizeUrl`方法中传入的`STATE`。

`getAuthInfo`方法将返回用户授权信息,包括:

`openid`:用户唯一标识

`access_token`:用户授权AccessToken

`expires_in`:授权AccessToken过期时间,单位是秒

`refresh_token`:用户刷新AccessToken,用于过期后刷新

刷新授权AccessToken

授权AccessToken有效期为2小时,过期后可以使用以下代码刷新:

php

//刷新授权AccessToken

$authInfo=$user->refreshAuthInfo($authInfo['refresh_token']);

通过本文介绍,你可以使用PHP的WeChatSDK方便地查询微信公众号用户信息,并且可以获得用户的授权信息,从而实现更丰富的公众号功能。