文档章节

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

lifephp
 lifephp
发布于 2013/07/26 22:21
字数 764
阅读 10468
收藏 71
点赞 0
评论 19

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

本程序已复活, 多谢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
博文 16
码字总数 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,也就是无法获取用户的信息。 我看到微信墙的功能中,只要我发一条消息过去,就会把我的头像、地理位置、...

龚程 ⋅ 2013/08/05 ⋅ 4

(转)微信Openid和fakeid对应简单实现

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

lixiaokai2008 ⋅ 2013/09/27 ⋅ 2

【微信公众平台开发】之三:LBS的开发

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

realsa ⋅ 2014/09/23 ⋅ 0

使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具

距离上次写使用python一步一步搭建微信公众平台(一)已经有几个月了,当中自已也搭建了一个中英文互译的小应用,可是由于英文翻中文好弄,中文翻译成英文一直有问题,知道是编码的问题,但是...

Kevin_Yang ⋅ 2014/01/19 ⋅ 39

实战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

如何获取到微信用户的fakeid

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

苏生不惑 ⋅ 2013/08/02 ⋅ 7

用图灵机器人快速创建微信公众帐号

微信公众帐号已经泛滥成灾,作为一个技术开发人员,想快速创建一个智能的微信公众帐号,可以试试功能强大的图灵机器人。 首先,必须已经拥有了一个可用的公众帐号,这是前提。 其次,登录公众...

maolv11 ⋅ 2014/04/24 ⋅ 0

微信统一下单接口

项目目前使用了微信公众平台的支付接口,遇到很多坑。其实还是觉得微信接口的API太散乱,做完了一套之后再看下,发现基本都有说明。没有java版本的demo。下面是自己的一些步骤思路; 步骤大体...

四川白菜 ⋅ 2016/10/11 ⋅ 0

微信公众平台第三方平台分析

最近比较关注微信公众平台的发展,听说微信的开放平台会有大动作。 着手研究了下微信公众平台的API接口自动回复。设计得还不错。 同时关注了下基于微信公众平台API做的一些第三方平台。 有以...

LarryKoo ⋅ 2013/03/18 ⋅ 2

Carp介绍和配置

Carp,是一个微信公众平台二次开发的SDK。 微信公众平台给出了公众号的开发接口和协议; Carp把微信公布的接口和协议进行了封装,同时把公众号的关注人、分组、图片、音视频文件、通讯信息等...

红木 ⋅ 2014/02/17 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部