不知不觉,版本以每周更新一次的脚步进行着,接下来应该是重构我的代码及框架的结构,有朋友反应代码有点乱,确实如此,当时写的时候只是按照订阅号来写的,后来才慢慢增加到支持API接口。目前还在开发第三方微信平台,旨在使用户能够无需自己开发就能简易搭建微信平台。

更新内容

1、增加支持语音识别

2、增加“网页授权获取用户基本信息”

语音识别其实是对Voice信息的一个扩展,您必须启用语音识别功能,启用后会在VoiceMessage中增加一个Recongnition字段,我们可以判断这个字段的内容进行响应。因为其实对Voice的一个扩展,此次更新在VoiceMessageRequest中加入了Recongnition字段。

在“网页授权获取用户基本信息”中,我使用的是测试账号,但发现了bug,我不知道只存在于测试账号还是正式账号也存在bug,目前我只有未认证的服务号可以测试,等下个月认证后我会测试下的。bug将在后面介绍。

此次内容的测试,我使用的是申请的测试号,大家可以自行申请,也可以加入我的测试号:

(因测试号仅支持20个粉丝,请亲测试后,自觉取消关注,方便其他用户测试)

测试一:语音识别

在先前的框架介绍中,我使用了框架然后获取博客园首页文章,在此基础上,我改变了下,我只要发送的语音中含有博客园就让其响应相同结果。

首先,创建一个VoiceMessageRole实现IMessageRole:

public class VoiceMessageRole : IMessageRole{public IMessageHandler MessageRole(MiddleMessage message){var request = message.RequestMessage as RequestVoiceMessage;if (request != null){//sMyLog.Log("语音识别:" + request.Recognition);if (!String.IsNullOrEmpty(request.Recognition)){if (request.Recognition.IndexOf("博客园文章") > -1){return new CnblogsArticleNewsMessageHandler();}if (request.Recognition.IndexOf("博客园") > -1){return new CnblogsTextMessageHandler();}return new DefaultMessageHandler();}else{return new VoiceMessageHandler();}}else{return new DefaultMessageHandler();}}}

规则的话可以自己定义,我这里就不重复造轮子了。在【MsgTypeMessageRole】规则中,增加对Voice的规则判断,使其进入到VoiceMessageRole规则。

接下来看下结果:

语音一:博客园

语音二:博客园文章

测试二:网页授权获取用户信息

通过文档,我们知道在使用网页授权这里,会使用OAuth2来完成授权的,文档中介绍如果使用Scope为Snsapi_userinfo可以不关注也能通过网页授权获取用户信息,经测试无效,必须为关注用户才能获取。网页授权用户信息步骤如下:

第一步:设置回调域名,测试账号在

进行修改,网页授权的域名仅对设置的域名有效,其下级域名都无效

第二步:用户同意授权,获取Code

这里我们就是生成一个链接,用户使用手机微信进入后,就能获取Code,链接是自己创建的,为了方便,我在框架中加了一个OAuthHelper类,您可以快速创建相应链接,使用方式如下:

new OAuthHelper(string appId).BuildOAuthUrl(string redirectUrl, OAuthScope scope, string state);

这个只是辅助类,您也可以自己写一个

根据OAuthScope的不同,显示也不同,Base方式下会直接跳转到redirectUrl,userinfo方式下会显示授权页面,点击同意后会跳转到redirecturl。

第三步:获取AccessToken和OpenId

Code可以通过Request[“Code”]获取,获取后,通过以下方式获取AccessToken和OpenId:

var request = new SnsOAuthAccessTokenRequest{AppID = m_appIdent.AppID,AppSecret = m_appIdent.AppSecret,Code = Label1.Text};var response = m_client.Execute(request);

response为SnsOAuthAccessTokenResponse类型,包含以下属性:

第四步:通过AccessToken获取用户信息:

SnsUserInfoRequest request = new SnsUserInfoRequest{OAuthToken = accesstoken,                Lang = Language.CN,OpenId = OpenId};SnsUserInfoResponse response = m_client.Execute(request);

这里要注意的是OAuthToken为第三步获取的Token,并非之前我们用的AccessToken。

SnsUserInfoResponse包含了如下用户信息:

至此,获取用户信息结束。

网页授权获取用户信息BUG

这个Bug我不知道是不是只在测试账号中出现,因为我没有正式账号,所以无法下判断。Bug如下:

1、Scope为Snsapi_Base时,也能获取用户基本信息(第四步),但在文档中说明是Base情况下是无法获取用户信息,只能获取到OpenId。

2、Scope为Snsapi_UserInfo时,必须为关注用户,但在文档中介绍,没有关注的用户在弹出授权窗口授权后也能进行浏览及获取用户信息。

以上Bug已提交至微信,但还未回复,或许会更近。

实战测试

请先加我的测试账号,然后使用微信扫一扫功能,扫描二维码:

               

(Snsapi_Base)                             (Snsapi_Userinfo)

扫描后会转到相应链接,您可以点击“获取AccessToken”,“刷新AccessToken”和“获取用户信息”进行测试。结果截图如下:

写在最后

自从发布了微信快速开发框架以来,收到了很多朋友的关注,也在得到反馈后逐步的改善。在和朋友的探讨中,发觉在微信公众平台的开发中,难得不是开发,而且微信平台对接口的一些限制,我们只有到了认证的服务号后才能使用完全的高级接口,对于很多朋友来说,基本上都是认证过的订阅号,所以很多测试都无法进行,希望后续微信平台会放宽限制。

明天去坐邮轮去台湾了,大家以后想旅游,做签证之类都可以找我,可以加我私信:jamesying1,不定期会发些特价旅游线路。作为码农,必要的放松还是需要的,大家不要太累,身体是革命的本钱。

微信快速开发框架(八)-- V2.3--增加语音识别及网页获取用户信息,代码已更新至Github...相关推荐

  1. 微信语音识别及网页获取用户信息

    不知不觉,版本以每周更新一次的脚步进行着,接下来应该是重构我的代码及框架的结构,有朋友反应代码有点乱,确实如此,当时写的时候只是按照订阅号来写的,后来才慢慢增加到支持API接口.目前还在开发第三方微信 ...

  2. 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)

    之前写过一篇微信公众号开发–自定义菜单跳转页面并获取用户信息 由于当时是刚学习微信公众号开发当时的思路虽然可行,不过不是最好的,最近也用到了需要获取用户信息的地方,再次整理一下. 流程 注意点 ### ...

  3. 公众号如何跳转到页面php,图文详解微信公众号开发自定义菜单跳转页面并获取用户信息实例...

    这篇文章主要介绍了微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解的相关资料,需要的朋友可以参考下 微信公众号开发 自定义菜单 请先读完本文再进行配置开发 请先前往微信平台开发者文档阅读&qu ...

  4. 微信快速开发框架(九)-- V3.0发布,代码已更新至Github 新增微店功能

    版本内容 1.修正了缺少对Event.View的支持 2.增加了用户UnionID 3.新增微信小店功能 4.多客服功能 5.单元测试 什么是UnionID 我们知道,每个用户针对一个微信公众账号都有 ...

  5. 微信快速开发框架V3.0--发布,代码已更新至Github 新增微店功能

    版本内容 1.修正了缺少对Event.View的支持 2.增加了用户UnionID 3.新增微信小店功能 4.多客服功能 5.单元测试 什么是UnionID 我们知道,每个用户针对一个微信公众账号都有 ...

  6. 微信小程序获取用户信息代码【最新】

    由于getUserInfo目前不能返回用户的微信名称 和微信头像,更新为getUserProfile方法方可,所以做出以下代码 wxml代码 <view class="header&q ...

  7. 《十四》微信小程序中的常用 API之登录、获取用户信息、支付、提现、跳转小程序、网络请求、弹框、导航、数据缓存、图片、查看文档、音频、拨打电话、剪贴板、滚动、WXML

    微信小程序提供了 wx 这个全局变量,通过这个全局变量可以调用微信小程序的 API. 登录: wx.login():获取登录凭证 code.通过登录凭证 code 进而换取用户登录态信息,包括用户在当 ...

  8. 微信公众号网页获取用户信息

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 效果图 html 代码: <!DOCTYPE html> <html><head ...

  9. java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解...

    微信公众号开发 自定义菜单 请先读完本文再进行配置开发 请先前往微信平台开发者文档阅读"网页授权获取用户基本信息"的接口说明 在微信公众账号开发中,往往有定义一个菜单,然后用户点击 ...

最新文章

  1. phpcms v9 实现外部栏目链接在新窗口打开
  2. HDU 1501 Zipper
  3. 无需向量监督的矢量图生成算法,入选CVPR 2021 | 代码开源
  4. Mysql 内置函数
  5. 图解《个人信息保护法》及55条改动对比
  6. SiamMask:视频跟踪最高精度 (中科院王强大神作品)
  7. 多功能监护系统开发与设计
  8. Delphi编译指令说明
  9. 容器编排技术 -- Kubernetes Volume
  10. matlab 可变参数与默认参数设置
  11. shell for while循环
  12. 论文导读 | 图上的可达性问题
  13. HEVC: I帧、P帧及B帧
  14. 易飞会计科目表自己外挂表构造语句
  15. 001-2019-0124 前端Html
  16. 领英工程VP:如何用 AI 消除 AI 偏见,打造高级人才推荐系统
  17. 世界杯---人生就是一届又一届世界杯
  18. atca背板_高速背板及相关标准介绍
  19. iOS 蓝牙4.0开发使用(内附Demo)
  20. 秀场精灵陈梓桐 受邀担任第六季完美童模全球总决赛首席体验官

热门文章

  1. Asp.Net IIS 管理类(全)
  2. 我新浪的免费邮箱这段时间总是登不上去或是不稳定
  3. Learning Video Object Segmentation from Static Images
  4. C++中之---数组和vector
  5. python---之suplot里面的twinx()函数
  6. 命令关闭手机蓝牙_iPhone手机这些实用的便捷功能,你知道多少?
  7. android右滑返回动画,Android仿微信右滑返回功能的实例代码
  8. 学生成绩管理系统实验报告_学生成绩管理系统设计
  9. php 未找到驱动程序,Laravel 5 PDOException找不到驱动程序
  10. 计算机主机制作过程,计算机主机箱的制作方法