来自 计算机编程 2019-12-29 05:22 的文章
当前位置: 澳门威尼斯人平台 > 计算机编程 > 正文

php微信公众平台开发之获取用户基本信息

本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录。

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

本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称、头像、性别、国家、省份、城市、语言。
本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录。

1、首先在某微信平台下配置OAuth2.0授权回调页面:

把微信和第三方网站结合起来运行,是许多客户经常要的方案。这里简要介绍一下获取微信用户的基本信息,并在第三方网站直接登录。

获取用户基本信息

开发者可通过OpenID来获取用户基本信息。请使用https协议。

接口调用请求说明

http请求方式: GET
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明

参数 是否必须 说明
access_token 调用接口凭证
openid 普通用户的标识,对当前公众号唯一
lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语

返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

{
    "subscribe": 1, 
    "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", 
    "nickname": "Band", 
    "sex": 1, 
    "language": "zh_CN", 
    "city": "广州", 
    "province": "广东", 
    "country": "中国", 
    "headimgurl":    "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", 
   "subscribe_time": 1382694957
}

参数说明

参数 说明
subscribe 用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
openid 用户的标识,对当前公众号唯一
nickname 用户的昵称
sex 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
city 用户所在城市
country 用户所在国家
province 用户所在省份
language 用户的语言,简体中文为zh_CN
headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
subscribe_time 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

全局返回码说明

使用网页调试工具调试该接口

 

图片 1

当微信公户关注一个公众号时,会产生一个独一无二的OpenID,此时我们就需要用到它去请求微信服务器获取用户的基本信息,包括头像,昵称等。

在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access Token。

2、通过appid构造url获取微信回传code值(appid可在微信平台下找到)

更加详细的说明请参考 微信开发文档 。

 

1)、微信不弹出授权页面url:

获取的步骤如下:

一、通过全局Access Token获取用户基本信息

A、code回传到页面wxProcess2.aspx,不带参数

1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token 4 第四步:拉取用户信息(需scope为 snsapi_userinfo) 5 附:检验授权凭证是否有效

  1. 用户关注以及回复消息的时候,均可以获得用户的OpenID

 

一、在微信公众平台 ―― 开发者中心 : 网页授权获取用户基本信息 :点击 “修改”,配置网页回调域名

图片 2

[csharp] view plain copy

二、用户授权获取code

<xml>
    <ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName>
    <FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName>
    <CreateTime>1372307736</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[subscribe]]></Event>
    <EventKey><![CDATA[]]></EventKey>
</xml>

 

必备资源:

图片 3

  1. Response.Redirect("" + appid + "&redirect_uri=");    

$appid = ‘*****************'; $appsecret = ‘*************************';

其中的FromUserName就是OpenID

 

注:redirect_url是授权后重定向的回调链接地址,请使用urlencode对链接进行处理。

  1. 然后使用access_token接口,请求获得全局Access Token

 

在网站入口处加上配置的 $url = ‘'.$appid.'&redirect_uri=http%3A%2F%2Fjixian.c.zmit.cn%2F&response_type=code&scope=snsapi_userinfo&state=123&connect_redirect=1#wechat_redirect';

返回结果:

B、code回传到页面wxProcess2.aspx,带参数reurl,即wxProcess2.aspx获得code的同时,也能获取reurl的值,具体如下:

并请求访问上诉 url 。

{
    "access_token": "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ",
    "expires_in": 7200
}

 

当用户授权后,回调设置的域名,并会在url参数中拼接我们所需要的code,我们直接用 $_GET[‘code'] 获取即可!

  1. 再使用全局ACCESS_TOKEN获取OpenID的详细信息

[csharp] view plain copy

三、通过code获取网页授权access_token和openid

返回如下:

 

$token_url = '_tokenappid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';$token = json_decode(file_get_contents($token_url));$opendid= $token-openid;$access_token = $token-access_token;

图片 4

  1. Response.Redirect("" + appid + "&redirect_uri=" + reurl + "&response_type=code&scope=snsapi_base&state=1#wechat_redirect");  

四、获取用户信息

{
    "subscribe": 1,
    "openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc",
    "nickname": "刺猬宝宝",
    "sex": 1,
    "language": "zh_CN",
    "city": "深圳",
    "province": "广东",
    "country": "中国",
    "headimgurl": "http://wx.qlogo.cn/mmopen/JcDicrZBlREhnNXZRudod9PmibRkIs5K2f1tUQ7lFjC63pYHaXGxNDgMzjGDEuvzYZbFOqtUXaxSdoZG6iane5ko9H30krIbzGv/0",
    "subscribe_time": 1386160805
}

 

$info_url = '_token='.$access_token.'&openid='.$opendid.'=zh_CN';$info = json_decode(file_get_contents($info_url));$data['name'] = $info-nickname;$data['image'] = $info-headimgurl;print_r($info);

图片 5

2)、微信弹出授权页面url:需要用户授权,才能获取code及后面需要获取的用户信息

五、当获取到用户的openid等信息后,我们就可以将其存入数据库,只要有openid了,就相当于微信用户已经登录该网站!

至此,获得用户的基本信息。

 

使用AppID和AppSecret获取的access_token,通过全局Access Token获取用户基本信息

这种方式最适合用户在关注的时候,回复一条欢迎关注+用户昵称的信息,如关注下面公众账号时的回复所示。扫描二维码可体验。

[csharp] view plain copy

  1. 用户关注以及回复消息的时候,均可以获得用户的OpenID

    xml ToUserName![CDATA[gh_b629c48b653e]]/ToUserName FromUserName![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]/FromUserName CreateTime1372307736/CreateTime MsgType![CDATA[event]]/MsgType Event![CDATA[subscribe]]/Event EventKey![CDATA[]]/EventKey/xml

图片 6图片 7 图片 8

 

其中的FromUserName就是OpenID

 

  1. Response.Redirect("" + appid + "&redirect_uri=" + reurl + "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect");  

本文由澳门威尼斯人平台发布于计算机编程,转载请注明出处:php微信公众平台开发之获取用户基本信息

关键词: