文档章节

微信公众平台私有API, 得到用户fakeId

lifephp
 lifephp
发布于 2013/07/26 22:21
字数 764
阅读 10591
收藏 71

-------最新内容--------------------

本程序已复活, 多谢forecho(他的github:https://github.com/forecho)维护

---------以下内容时间久远---------------

最新在工作之余玩起了微信公众平台, 并且快速做了一个玩骰子的小游戏(公共微信号cometoplay), 因为这个游戏需要主动发送信息给用户, 所以需要用到微信的私有api, 思路很简单, 因为公共平台可以通过web发送给信息给用户, 那么可以通过程序模拟登录再调发送信息的接口即可.

在github上发现一个api(https://github.com/zscorpio/weChat), 下下来不能用, 因为cookie和没考虑到webToken(每次登录会根据时间(估计)生成一个token)导致不能用, 自己改写了下, 完善了些功能, 暂且可用. 已放在github上, 有兴趣的朋友可以下来用用: https://github.com/lealife/WeiXin-Private-API.

这里简单介绍下我做的小游戏cometoplay玩玩, 就是一个字符型的玩骰子功能: 用户先输入对方微信号和Ta玩骰子, 于是再设置骰子的6个面对应的选项(比如, 买菜做饭做菜全包, 拖地, 洗衣服, 洗碗, 倒垃圾, happy睡大觉), 然后系统随机生成一个结果, 并把该结果发送给对方. (另, 这个功能主要是因为和女朋友总是因为在哪吃饭不能抉择而浪费了大量时间的问题才开发的)

这里很重要的一点是要解析用户的信息, 每次用户关注cometoplay, 就需要解析该用户的信息, 把用户的fakeId, 微信号从web上解析下来放在自己的数据中, 不然就不能实现双方玩骰子, 主动发送信息给用户的功能了.

怎么解析用户的信息得到fakeId, 微信号呢?

当有用户发送信息后, 如何得到用户的fakeId?
1. 从web上得到最近发送的信息
2. 将用户发送的信息与web上发送的信息进行对比, 如果内容和时间都正确, 那肯定是该用户, 便得到用户的fakeId, 再调用接口得到用户的详细信息, 保存到自己的数据库中.
    实践发现, 时间可能会不对, 相隔1-2s或10多秒也有可能, 此时如果内容相同就断定是该用户

关于解析用户信息的接口已在WeiXin.php中有所体现, 稍微修改即可使用.

----------------

2013/8/17. 用户反应不能解析用户信息, 查原因是不能使用http协议了, 今天重新用curl发https请求才行. github已更新.

---------------

另, 微信公众平台接口改变很频繁, 本程序的修改速度有一定的滞后性, 若有朋友得知接口已变, 烦请告知我, 若能一起维护更好, lifephp@gmail.com, 多谢!

© 著作权归作者所有

共有 人打赏支持
lifephp
粉丝 25
博文 17
码字总数 11134
作品 2
松江
程序员
私信 提问
加载中

评论(19)

lifephp
lifephp

引用来自“小六子_33”的评论

貌似微信发送的接口又修改了,用户必须24小时内和公众号互动才可以主动发送,而且现在的主动发送回携带一个random参数。我研究了一会,估计彻底不行了。
11

多谢, 现在我那个应用已经关闭了, 最近也没关注微信公众平台, github源码打算关闭, 所以没办法帮你了, 如果你能解决, 烦请发布到github上, 公开出来. 多谢!
小六子_33
小六子_33
貌似是我自己微信号的原因,random参数好像也没啥影响
小六子_33
小六子_33
貌似微信发送的接口又修改了,用户必须24小时内和公众号互动才可以主动发送,而且现在的主动发送回携带一个random参数。我研究了一会,估计彻底不行了。
11
lifephp
lifephp

引用来自“EchoCyw”的评论

Array
(
[id] => 1495
[type] => 1
[fakeid] => 69720240
[nick_name] => 逗你玩
[date_time] => 1383627499
[content] => id@hyvgii
[source] =>
[msg_status] => 4
[has_reply] => 0
[refuse_reason] =>
)


funciton getLatestMsgByCreateTimeAndContent

里面
if($msg['dateTime'] == $createTime) {
参数错误
应为
if($msg['date_time'] == $createTime) {

微信的访问接口, 返回值变化很快
EchoCyw
EchoCyw
Array
(
[id] => 1495
[type] => 1
[fakeid] => 69720240
[nick_name] => 逗你玩
[date_time] => 1383627499
[content] => id@hyvgii
[source] =>
[msg_status] => 4
[has_reply] => 0
[refuse_reason] =>
)


funciton getLatestMsgByCreateTimeAndContent

里面
if($msg['dateTime'] == $createTime) {
参数错误
应为
if($msg['date_time'] == $createTime) {
f
foolay
请教一下 getCookieAndWebToken()里头
1 $re = $this->getUserInfo(1); 这个 fakeId 1 是什么意思 不存在啊```
2 if(is_array($re)) return true; 怎么没有后半句 not array , 执行 $this->login() ???

if($this->cookie && $this->webToken) {
$re = $this->getUserInfo(1);
if(is_array($re)) {
return true;
}
}
lifephp
lifephp

引用来自“foolay”的评论

昨晚 微信平台更新了··· 好像文件失效了··· 能帮忙把新程序弄一下不?

多谢指出, 已更新include / LeaWeiXinClient.php. github已更新
f
foolay
昨晚 微信平台更新了··· 好像文件失效了··· 能帮忙把新程序弄一下不?
lifephp
lifephp

引用来自“marskenny”的评论

请问我这边一直显示登录超时??是我的服务器环境问题么?

登录之后会把cookie和webToken保存到缓存文件中,你看下这两个文件是否有信息?如果没有,每次访问接口都需要登录的。
f
foolay
不错 对初学者很有帮助! 谢谢!
(转)微信Openid和fakeid对应简单实现

好久没有写日志了,最近一直在微信公众平台5.0出来以后才拿到appid,下手比较晚很多功能没有赶上。微信虽说开放了,但是开发的功能实在有限,就 那么几个简单的接口,实在是做不了什么事,谁...

lixiaokai2008
2013/09/27
0
2
微信开发中微信墙的技术实现

微信公众平台开发中,用户发送给平台的时候,只能获取到用户的openid,不能获取fakeId,也就是无法获取用户的信息。 我看到微信墙的功能中,只要我发一条消息过去,就会把我的头像、地理位置、...

koalaTM
2013/08/05
3.8K
4
【微信公众平台开发】之三:LBS的开发

1、相关资料 *基于SAE和百度LBS微信公众平台周边搜索的实现{Java} *当有道翻译遇到微信公众平台{有道翻译API、百度LBS} *百度地图车联网API文档(http://developer.baidu.com/map/index....

realsa
2014/09/23
0
0
实战Nagios网络监控(3)——Nagios 微信报警

1. 下载微信公众平台私有接口 # yum install -y git # git clone https://github.com/lealife/WeiXin-Private-API 2. 修改微信公众平台私有接口代码,以配合 nagios 报警 # cp -r WeiXin-Pri...

willis_sun
2016/10/26
0
0
如何获取到微信用户的fakeid

想实现给用户主动发送信息,前提是需要获取用户的fakeid,用网上的api模拟登陆抓取https://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&token=6641538&lang=zh_CN&pagesize=1...

苏生不惑
2013/08/02
10.3K
7

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
2
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
4
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部