微信公众号开发模板消息推送(二) 获取openid java,再来看一下模板推送的post请求数据 (以微信给的为例):
POST数据说明
POST数据示例如下:
{ "touser":"OPENID", "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY", "url":"http://weixin.qq.com/download", "data":{ "first": { "value":"恭喜你购买成功!", "color":"#173177" }, "keynote1":{ "value":"巧克力", "color":"#173177" }, "keynote2": { "value":"39.8元", "color":"#173177" }, "keynote3": { "value":"2014年9月22日", "color":"#173177" }, "remark":{ "value":"欢迎再次购买!", "color":"#173177" } } }
参数说明
参数 | 是否必填 | 说明 |
---|---|---|
touser | 是 | 接收者openid |
template_id | 是 | 模板ID |
url | 否 | 模板跳转链接 |
data | 是 | 模板数据 |
返回码说明
在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:
{ "errcode":0, "errmsg":"ok", "msgid":200228332 }
使用效果很好。
网上普遍的用法都是网页登录授权,用户确认登录,然后返回用户的基本信息,微信也给出了接口文档 https://mp.weixin.qq.com/wiki?id=mp1421140842&highline=openid 可以参照这个获取你想要的用户的openid。
当然,我采用的不是上述方法,我直接获取所有用户的openid,微信官方给出的接口文档,https://mp.weixin.qq.com/wiki?id=mp1421140840&highline=%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%88%97%E8%A1%A8%7C%26%E8%8E%B7%E5%8F%96%7C%26%E5%88%97%E8%A1%A8%7C%26%E7%94%A8%E6%88%B7
接口调用请求说明
http请求方式: GET(请使用https协议)
https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
参数 | 是否必须 | 说明 |
access_token | 是 | 调用接口凭证 |
next_openid | 是 | 第一个拉取的OPENID,不填默认从头开始拉取 |
返回说明
正确时返回JSON数据包:
{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}参数 | 说明 |
total | 关注该公众账号的总用户数 |
count | 拉取的OPENID个数,最大值为10000 |
data | 列表数据,OPENID的列表 |
next_openid | 拉取列表的最后一个用户的OPENID |
错误时返回JSON数据包(示例为无效AppID错误):
{"errcode":40013,"errmsg":"invalid appid"}直接获取到所有人的openid 信息,但是你不知道,谁是谁,没办法找到你所要的人对应的 openid .
得到openid之后,可以直接根据openid,获取到用户的基本信息。https://mp.weixin.qq.com/wiki?id=mp1421140839&highline=%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%7C%26%E7%94%A8%E6%88%B7
获取用户基本信息(包括UnionID机制)
开发者可通过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数据包给公众号:
{"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4
eMsv84eavHiaiceqxibJxCfHe/0",
"subscribe_time": 1382694957,"groupid": 0,
"tagid_list":[128,2]
}参数说明
参数 | 说明 |
subscribe | 用户是否订阅该公众号标识,值为0时, 代表此用户没有关注该公众号,拉取不到其余信息。 |
openid | 用户的标识,对当前公众号唯一 |
nickname | 用户的昵称 |
sex | 用户的性别,值为1时是男性, 值为2时是女性,值为0时是未知 |
city | 用户所在城市 |
country | 用户所在国家 |
province | 用户所在省份 |
language | 用户的语言,简体中文为zh_CN |
headimgurl | 用户头像,最后一个数值代表正方形头像大小 (有0、46、64、96、132数值可选,0代表640*640正方形头像), 用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。 |
subscribe_time | 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间 |
unionid | 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。 |
remark | 公众号运营者对粉丝的备注, 公众号运营者可在微信公众平台用户管理界面对粉丝添加备注 |
groupid | 用户所在的分组ID(兼容旧的用户分组接口) |
tagid_list | 用户被打上的标签ID列表 |
错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}然后根据用户的昵称和一些基本信息就可以得到用户的openid.
可以自己写个程序跑一下,一次将所有人的openid都拿到,之后用的时候直接找就可以了。openid就是微信号的加密,但是对于不同的微信公众号openid是不一样的。