微信自动发送消息接口开发(二)

上一篇讲到OAuth鉴权成功,接下去就是监听微信消息的接口了.

成功登陆后,通过抓包和源码查看分析,主要有用到的监听新消息的接口有以下几个:

1. 微信登录初始化列表: webwxinit

微信登录后会立即调用的一个接口,用来初始化一些列表数据,比方说常用联系人列表,广告推送等

微信初始化

这个接口是一个POST接口,传参是一个json对象,注意BaseRequest这个对象存的是oauth鉴权返回的一些值,很多地方都会用到,下面是我做的封装,可以参考一下:

public class BaseRequest
{
    WXModel _model;
    public BaseRequest(WXModel model)
    {
        this._model = model;
    }

    public string DeviceID { get { return "e" + DateTime.Now.Ticks; } }

    public string Sid { get { return _model.wxsid; } }

    public string Skey { get { return _model.skey; } }

    public string Uin { get { return _model.wxuin; } }

}

注意这个接口返回的Content-Type不是很标准,是text/plain 并且没有跟charset字符集,微信整套接口用的全部都是UTF-8,和我一样用HttpHelper的人可能要手动设置一下获取编码,否则获取下来的会和谷歌开发环境的数据一样是乱码.

微信乱码

微信几个接口都存在这样的问题,不再一一叙述

2. 微信获取联系人列表详情: webwxgetcontact

webwxgetcontact是一个Get接口,用来获取联系人内容,没有什么好多说的,参数中r取随机值,其他的在之前鉴权内容中都有返回.

微信联系人列表

3. 微信获取群组列表详情: webwxbatchgetcontact

POST请求,除了有BaseRequest外,再给一个List是要请求的UserName,在一开始的webwxinit接口返回的ChatSet中可以得到,源码是对ChatSet过滤了已经存在的常用个联系人,请求剩下的所有群联系人

微信群列表

4. 微信检查是否有新的数据: synccheck

GET请求 里面其他没什么好说的,值得注意的是synckey 这个参数在init的时候会返回外,每次更新数据的时候也会有,要记得每次请求接口对应更新synckey里面的值.
请求当返回的是window.synccheck={retcode:"0",selector:"0"}则表示没有新的数据更新,其他都是要更新新的消息.
下面是我对synckey的封装.

public class KeyModel
{
    public int Key { get; set; }

    public long Val { get; set; }

    public override string ToString()
    {
        return Key + "_" + Val;
    }
}

public class SyncKey
{
    public List<KeyModel> List { get; set; }

    public int Count { get { return List?.Count ?? 0; } }

    public override string ToString()
    {
        if (List == null || List.Count == 0) return "";
        return string.Join("|", List);
    }
}

5. 微信同步新的消息 webwxsync

POST请求 最重要的一个请求,用来同步更新新的消息.
请求参数其他也没什么好说的,主要通过SyncKey来确定这一次需要更新的内容.rr是一个随机数.

同步消息

里面返回的json中 AddMsgList是新的消息列表,剩下的ModContactList,DelContactList,ModChatRoomMemberList我没有仔细研究.应该就是字面的意思:群人员变动,群删除,群基本信息变动等.
注意这里会返回SyncKey ,需要更新最新的SyncKey.

成功监听到微信消息:(接口中还有不少值,我的监听程序并没有去解析,具体可去看对应接口)

微信监听消息

源码中消息返回type展示:


 /*
        MSGTYPE_TEXT: 1,
        MSGTYPE_IMAGE: 3,
        MSGTYPE_VOICE: 34,
        MSGTYPE_VIDEO: 43,
        MSGTYPE_MICROVIDEO: 62,
        MSGTYPE_EMOTICON: 47,
        MSGTYPE_APP: 49,
        MSGTYPE_VOIPMSG: 50,
        MSGTYPE_VOIPNOTIFY: 52,
        MSGTYPE_VOIPINVITE: 53,
        MSGTYPE_LOCATION: 48,
        MSGTYPE_STATUSNOTIFY: 51,
        MSGTYPE_SYSNOTICE: 9999,
        MSGTYPE_POSSIBLEFRIEND_MSG: 40,
        MSGTYPE_VERIFYMSG: 37,
        MSGTYPE_SHARECARD: 42,
        MSGTYPE_SYS: 1e4,
        MSGTYPE_RECALLED: 10002,  // 撤销消息*/


标签: none

仅有一条评论

  1. nihef nihef

    网页版的被禁止了现在都是用个人PC微信接口自动发消息 2645542961 比较稳定

添加新评论