`
stationxp
  • 浏览: 17329 次
社区版块
存档分类
最新评论

微信公共开发者文档 阅读笔记

 
阅读更多

先上效果图:



    作者博客:http://blog.csdn.net/stationxp  
    作者微博:http://weibo.com/liuhailong2008  
    转载请取得作者同意  


一 基础篇

1、新手接入:
http://mp.weixin.qq.com/wiki/index.php?title=接入指南需要注意的是URL必须是公网能访问的,必须是80端口。
刚才被80端口郁闷了好久,文档中也没明确写。

文档最下面写着:“此外请注意,微信公众号接口只支持80接口”。好吧,是我人品问题。

2、典型案例介绍

http://mp.weixin.qq.com/wiki/index.php?title=典型案例介绍

自定义菜单很酷,如果没有自定义菜单,纯靠写程序响应客户输入,那需要深厚的自然语言处理能力。

需要绑定客户身份,可能是手机号,可能跳转到一个页面绑定。
问题:每次得到的OpenID一样吗?

如果跳转到另一个页面,可以把OpenID隐藏在get中传过去。然后存在隐藏表单域中,你懂的。

3、开发者规范
http://mp.weixin.qq.com/wiki/index.php?title=开发者规范
模板消息和用户数据方面的规范。

“请勿为任何用户自动登录到微信公众平台提供代理身份验证凭据”意思是让每个人用自己的身份凭据。
可以为他人提供身份凭据吗?

“请勿自动将浏览器窗口定向到其他网页”哪个浏览器窗口?

“完整的开发者规范和接口限制,请详见开发者接口文档”
开发者接口文档在哪里?


4、调用接口频率限制
http://mp.weixin.qq.com/wiki/index.php?title=接口频率限制说明

5、调试接口
https://mp.weixin.qq.com/debug/

6、access_token
调用接口时,服务器需要知道调用者身份。
但每次都提交AppID和AppSecret是不是有点傻。服务器也麻烦,每次都要验证。
干脆服务器发良民证,检查AppID和AppSecret没问题就发一个,可以用12分钟。
在这12分钟内,只要检查良民证就可以了。

200 OK
Server: nginx/1.4.4
ConDate: Wed, 07
Content-Type
{
    "access_token": "35r3_cicy-CtwRrK0RoPmt13OIX_WXSxJI1Yd_s5wPghVJ7RU2V8STmH7fcAmD6S",
    "expires_in": 7200
}

7、上传下载多媒体文件
http://mp.weixin.qq.com/wiki/index.php?title=上传下载多媒体文件
200 OK
Content-Length: 118
Date: Wed,
{
    "type": "image",
    "media_id": "DPlBG0Txb3HYzwI4OfJCj9G9ozURJOTVd2W4qAMt5LNMGSc5vy07b2qAHvj_-wJx",
    "created_at": 1399478362
}


请求地址:
http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=35r3_cicy-CtwRrK0RoPmt13OIX_WXSxJI1Yd_s5wPghVJ7RU2V8STmH7fcAmD6S&type=image

"media_id": "Gmr7w0G_4uMxH0PgLF2yQDRjiQSHSFlpWxeuCxIgY9wGf5giBbqemqBX2V9Gddqi"

要自己写Web管理界面?
curl是什么工具?
下载文件,在线调试没通过。报错JSON数据格式不正确。


8、验证消息真实性
http://mp.weixin.qq.com/wiki/index.php?title=验证消息真实性

怎么知道消息是从微信服务器传过来的呢?
和验证成开发者时候一样的。

每次微信服务器请求url都会带signature、timestamp、nonce参数。
url所指向的web程序可以将timestamp、nonce加上token(保存在用户自己服务器上)算出一个字符串,和signature比较。

学习一下微信API的设计,还是不错的。

二、自定义菜单

1、常识
"目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定

义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。"

2、菜单相应类型
有click和view两种。定义菜单时,click的同时定义key,view的同时定义url。


3、如何创建菜单

{
  "button":[
     {"type":"click", "name":"关于我","key":"BTN_ABOUT_USER" },
     {"name":"我的伙伴",  "sub_button":[
            {"type":"view","name":"胡磊磊", "url":"http://chaoshi.cgdmc.com/wx/person/hulei.php" },
            {"type":"view","name":"魏超超", "url":"http://chaoshi.cgdmc.com/wx/person/weichao.php"  },
            {"type":"view","name":"雷达达","url":"http://chaoshi.cgdmc.com/wx/person/leida.php"}
 ]
      },
     {"type":"click","name":"关于作者", "key":"BTN_ABOUT_ME"}
   ]
 }


请求地址:
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=xx
返回结果:
200 OK
Content-Length: 27
Date: Wed, 07
Content-Typ
{
    "errcode": 0,
    "errmsg": "ok"
}

4、如何查询现有菜单:(这个有意义吗?自己做一个管理平台?)
200 OK
chaoshi.cgdmc.com: nginx/1.4.4
Con
Date: Wed, 07
Content-Typ
{
    "menu": {
        "button": [
            {
                "type": "click",
                "name": "关于我",
                "key": "BTN_ABOUT_USER",
                "sub_button": [ ]
            },
            {
                "name": "我的伙伴",
                "sub_button": [
                    {
                        "type": "view",
                        "name": "胡磊磊",
                        "url": "http://chaoshi.cgdmc.com/wx/person/hulei.php",
                        "sub_button": [ ]
                    },
                    {
                        "type": "view",
                        "name": "魏超超",
                        "url": "http://chaoshi.cgdmc.com/wx/person/weichao.php",
                        "sub_button": [ ]
                    },
                    {
                        "type": "view",
                        "name": "雷达达",
                        "url": "http://chaoshi.cgdmc.com/wx/person/leida.php",
                        "sub_button": [ ]
                    }
                ]
            },
            {
                "type": "click",
                "name": "关于作者",
                "key": "BTN_ABOUT_ME",
                "sub_button": [ ]
            }
        ]
    }
}
5、自定义菜单删除的话,只能全删
已有的情况下,再次添加,是否就是更新?
试了一下,是的。

6、菜单事件的处理
http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单事件推送
type为view的不需要写代码支持。
只来看type为click的。
需要得到Event和EventKey。
分别点了“关于我”和“关于作者”,自己服务器代码收到的消息是:
gh_xxxxxxxxx(公共平台微信号)
xxxx-0 (用户OpenID)
1399481134
event
CLICK
BTN_ABOUT_USER

gh_xxxxxxxxx(公共平台微信号)
xxxx-0 (用户OpenID)
1399481140
event
CLICK
BTN_ABOUT_ME
程序代码里,
if( 'BTN_ABOUT_ME'.equals(eventKey) ){
    response.setMsgType("text");
    response.setContent("我是刘海龙,围脖地址:\nweibo.com/liuhailong2008\n亲,加关注呦!");
}

按照规矩,处理消息前,应该先验证一下。记得不,亲,签名就是干这个用的。

三、 获取用户信息

1、获取用户信息

https://api.weixin.qq.com/cgi-bin/user/info?access_token=tP2ttoAfStr8-1j2QzmNVcuw0wCy_bv5ZPVw2gygKptiwAVm2JN_eo0CpdH1EMeh&openid=oai_Ejvay12_FjT0fWWwc4gSe7-0
返回结果:
200 OK
Server: nginx/1.4.4
Con
Date: Wed, 07
Content-Typ
{
    "subscribe": 1,
    "openid": "oai_xxxe7-0",
    "nickname": "刘海龙",
    "sex": 1,
    "language": "zh_CN",
    "city": "保定",
    "province": "河北",
    "country": "中国",
    "headimgurl": "http://wx.qlogo.cn/mmopen/ezjZug0fpibxah7nkiaYLMgg7RnS0NPHFlt7Yg6BbPTTmq1B1rfI4DCIPofibTcYHnyqMAcr2cyp76A79MCoKicpbQ/0",
    "subscribe_time": 1399480903
}

程序调用返回:

1
oai_EjvxxxWWwc4gSe7-0
刘海龙
1
zh_CN
保定
河北
中国
http://wx.qlogo.cn/mmopen/ezjZug0fpibxah7nkiaYLMgg7RnS0NPHFlt7Yg6BbPTTmq1B1rfI4DCIPofibTcYHnyqMAcr2cyp76A79MCoKicpbQ/0
1399480903
oai_Ejvay12_FjT0fWWwc4gSe7-0
gh_3d3203deb07d
1399482736

完事儿收工!
分享到:
评论

相关推荐

    python实现网站微信登录的示例代码

    最近微信登录开放公测,为了方便微信用户使用,我们的产品也决定加上微信登录功能,然后就有了这篇笔记。 根据需求选择相应的登录方式 python实现网站微信登录的示例代码 微信现在提供两种登录接入方式 移动应用...

    微信小程序超详细实战云开发笔记

    根据2021年《微信小程序超详细实战云开发》所编写,作者从教中学,与大多数同学一样属于零基础的小萌新,该书虽说是超详细,但也不过是于有较高小程序基础的开发者而言,作者结合微信开发文档与百度多方学习,一点点...

    Thinkphp整合微信支付功能

     独特的appid、appscrect、接口权限之中设置可以获取用户ID信息权限的域名(每个用户对于不同公众都会有一个特有ID,通过这个ID获取用户微信账号基本信息、详情看微信开发者文档)、在微信支付按钮出设置微信支付...

    小程序学习笔记1-tabBar、轮播图和九宫格

    这一部分看官方网站,了解一下小程序的架构页面组成啥的,没什么难度,打开微信开发者工具,创建一个QuickStart 项目就看到了。 下一步看一下官方的小程序demo,看看都有哪些功能样式,这个跟开发文档是对应的。demo...

    2048小游戏-带源码和文档.zip

    这也增加了开发者的工作量,因此经过人们不懈的努力,终于在原有基础上对html进行了改革,这就是微信小游戏。 微信小游戏具有很多新的特性,最主要的还是它具有跨平台兼容性,不仅可以在电脑上运行,还可以在移动...

    基于python+appium的android微信自动添加好友及爬取其朋友圈的爬虫.zip

    文档与操作手册:为了方便他人理解和使用我的作品,我编写了详细的操作手册和使用说明,同时提供了一份Markdown格式的文档,概述了项目的主要功能和特点。 学习笔记:在项目开发过程中,我记录了大量的学习笔记和...

    基于stm32、树莓派,后端使用Java的springboot架构,以微信小程序作为用户控制端的智能家居控制系统.zip

    社区与资源:ST官方社区、论坛、博客、技术文档、培训材料、应用笔记、用户案例等资源丰富,为开发者提供全方位的技术支持和交流平台。 产品线与封装 STM32产品线按性能、功耗、外设组合等特性划分为多个子系列,...

    leetcode中国-woaker.github.io:woaker的个人博客

    名称来源于'Docs',主要以文档的形式分享各种开发相关的知识。 参见中文自述文件。 网站 网络化: Gitee 页面: GitHub 页面: 所有者 ,后端开发人员。 微信:YLB0109 电子邮件: GitHub: 项目 Doocs 现在有以下...

    leetcode中国-xvyqiu:xvyqiu

    名称来源于'Docs',主要以文档的形式分享各种开发相关的知识。 参见中文自述文件。 链接 GitHub页面: 吉蒂页面: 所有者 ,后端开发人员。 微信:YLB0109 电子邮件: GitHub: 项目 Doocs 现在有以下项目: # 项目 ...

    基于STM32单片机和无线网络技术设计和开发的一款智能空气监测系统.zip

    社区与资源:ST官方社区、论坛、博客、技术文档、培训材料、应用笔记、用户案例等资源丰富,为开发者提供全方位的技术支持和交流平台。 产品线与封装 STM32产品线按性能、功耗、外设组合等特性划分为多个子系列,...

Global site tag (gtag.js) - Google Analytics