大数据_商业智能FineBI的如何实现微信企业应用

上传人:蜀歌 文档编号:148743940 上传时间:2020-10-22 格式:PDF 页数:17 大小:904.90KB
返回 下载 相关 举报
大数据_商业智能FineBI的如何实现微信企业应用_第1页
第1页 / 共17页
大数据_商业智能FineBI的如何实现微信企业应用_第2页
第2页 / 共17页
大数据_商业智能FineBI的如何实现微信企业应用_第3页
第3页 / 共17页
大数据_商业智能FineBI的如何实现微信企业应用_第4页
第4页 / 共17页
大数据_商业智能FineBI的如何实现微信企业应用_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《大数据_商业智能FineBI的如何实现微信企业应用》由会员分享,可在线阅读,更多相关《大数据_商业智能FineBI的如何实现微信企业应用(17页珍藏版)》请在金锄头文库上搜索。

1、大数据 商业智能 FineBI 的如何实现微信企业应用 1. 报表微信企业应用示例 示例见 Demo 视频。 2. 创建报表微信企业应用 管理员登录微信企业号,根据提示新建应用,创建后进入应用,可以看到应用的基本 信息,其中需要关注的信息有: # 应用 ID:微信号中可能有很多个应用,后台开发的时候需要根据应用 ID 来决定是 在哪个应用中进行响应 # 可见范围:微信权限控制 # 应用模式:应用模式主要分成两种: 普通模式:这个模式下不能调用微信的接口,只能设置固定的菜单及回复的消息;如 果需要的微信应用比较简单,菜单都是固定的,可以用这种模式,但是报表就无法绑定用 户了,查看报表的时候就需要

2、先登录(除非报表不做权限控制); 回调模式:开发者可以通过企业号提供的接口,获取微信用户信息,实现自动回复、 自定义菜单等个性化功能。回调模式的界面如图所示: 3. 回调模式配置 我们在应用中需要调用微信开放的接口做开发,所以选择“回调模式”,这样微信服 务器会在客户手机和开发者服务器间架起一个桥梁,通过消息的传递和响应,实现与用户 的交互操作: 上面这个流程走通,需要微信服务器和开发者服务器先建立通信,这样才能构建一个 完整的链路。 进入回调模式,开启模式后,可以看到,下面的功能都是不可用状态,需要设置好回 调 URL 及密码后才能用的。 我们点开修改,会看到有 3 个参数,都是我们需要关注

3、的: # URL:开发服务器接收微信收企业号服务器推送请求的地址,支持 http 或 https 协 议,端口不限,这个 URL 就相当于开发服务器的后台引擎,微信服务器推送的请求都是到 这个地址。另外注意,这个地址必须是外网可以访问的。 # Token:可由企业任意填写也可以随机获取,用于生成签名。 # EncodingAESKey:用于消息体的加密,是 AES 密钥的 Base64 编码,点击随机获 取就可以获得。 点击保存的时候,企业号会向验证 url 发送一个 get 请求,例如: 1. xxurl?msg_signature=5c45ff5e21c57e6ad56bac8758b79

4、b1d9ac89fd3tamp=1 409659589 2. wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID); 3. sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerify Nonce, sVerifyEchoStr); 返回验证信息时需要进行 urldecode 处理。 4. 获取微信账号(OAuth2 验证)后台登录报表 在报表服务器端,为了安全我们会给报表设置权限,用户访问报表的时候需要先登 录,认证成功后才可以看到他能看到的数据; 用户

5、登录微信进入报表企业应用后,访问报 表时肯定不希望再次弹出登录界面来登录报表的,而不登录报表的话,就无法查看报表内 容了。 所以在打开报表时,我们需要带上微信账号的身份信息,在后台登录报表。 例如 demo 示例中,在微信企业号管理平台中,进入应用回调模式,设置自定义菜单 添加事件类型选择跳转到网页,url 链接类似如下: 1. 16. 17. FR.ajax( 18. url: /WeiXin/page/OAuth2.jsp, /获取微信 userid 19. type: GET, 20. data: code:code, 21. success: function(msg) 22. var

6、 username = msg; 23. login(username, 123456); 24. 25. ); 26. /单点登录 27. function login(username, password) 28. alert(当前登录账号为: + username); 29. jQuery.ajax( 30. url:/WeiXin/ReportServer?op=fs_load/认证成功跳转页面,因为 ajax 不支持重定向所有需要跳转的设置 38. /登录成功 39. else if (data.status = fail) 40. alert(用户名或密码错误);/登录失败(用户名

7、或密码错 误) 41. 42. , 43. error:function() 44. alert(超时或服务器其他错误);/ 登录失败(超时或服务器其他错 误) 45. 46. ); 47. 48. 49. 50. 51. 52. 在 Login.jsp 中,首先获得 code 值后,到 OAuth2.jsp 根据 access_token 和 code 获取 userid,然后可以使用 userid 到报表端进行单点登录 注意:这边微信账号和报表账号如果是不一样的,那么需要有微信账号、报表账号及 密码对应表,可以根据微信账号获取到报表用户账号及密码来做单点登陆,示例中假设的 是微信账号和报表

8、账号是相同的,并且密码都是统一的 123456. OAuth2.jsp 代码如下: 1. 2. 3. 4. 5. 6. 7. 8. 总结:总结: OAuth2 验证需要关注的参数有: 我们可以使用现成的封装好的类 WeixinUtil.getAccessToken 来获取 access_token。 以及 GOauth2Core.GetUserID 来进一步获取 userID。 5. 接收微信消息与事件并响应 微信应用开启回调模式后,成员给企业应用发送消息,或者触发关注、进入应用、点 击菜单、上报地理位置等事件时,微信服务器就会把这些动作及内容,以 POST 的方式推 送到开发服务器(就是一开

9、始设置的验证 URL 的地方),例如之前我们的地址是 1. :8081/WeiXin/page/WeiXinServer.jsp 。则推送的消息就是 1. :8081/WeiXin/page/WeiXinServer.jsp?msg _signature=ASDFQWEXZCVAQFASDFASDFSStamp=13500001234 3. ServletInputStream in = request.getInputStream(); 4. InputStreamReader isr = new InputStreamReader(in); 5. BufferedReader br = n

10、ew BufferedReader(isr); 6. String s = ; 7. while(s=br.readLine()!=null) 8. sb.append(s) ; 9. 10. String sReqData =sb.toString(); 11. String sReqMsgSig = request.getParameter(msg_signature); 12. String sReqTimeStamp = request.getParameter(timestamp); 13. String sReqNonce = request.getParameter(nonce)

11、; 14. System.out.println(sReqData: + sReqData); 15. System.out.println(sReqMsgSig: + sReqMsgSig); 16. System.out.println(sReqTimeStamp: + sReqTimeStamp); 17. System.out.println(sReqNonce: + sReqNonce); 18. wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID); 19. String sMsg = wxcpt.DecryptMs

12、g(sReqMsgSig, sReqTimeStamp, sReqNonce , sReqData); 20. System.out.println(after decrypt msg: + sMsg); 21. 22. /处理接收的消息及事件 23. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 24. DocumentBuilder db = dbf.newDocumentBuilder(); 25. StringReader sr = new StringReader(sMsg); 26. Input

13、Source is = new InputSource(sr); 27. Document document = db.parse(is); 28. 29. Element root = document.getDocumentElement(); 30. 31. String ToUserName = root.getElementsByTagName(ToUserName).item(0) .getTextContent();/企业号 CorpID 32. String FromUserName = root.getElementsByTagName(FromUserName).ite m

14、(0).getTextContent();/成员的 UserID 33. String MsgType = root.getElementsByTagName(MsgType).item(0).getT extContent(); /消息类型 34. StringBuffer sRespDatabf = new StringBuffer(); 35. String sRespData; 36. 37. / 进入企业应用时 38. if (MsgType.equals(event) 39. String Event = root.getElementsByTagName(Event).item(

15、0).getTe xtContent(); 40. f(Event.equals(enter_agent) 41. sRespDatabf.append(); 42. sRespDatabf.append(); 43. sRespDatabf.append(); 44. sRespDatabf.append( + sReqTimeStamp + ); 45. sRespDatabf.append(); 46. sRespDatabf.append(); 47. sRespDatabf.append(); 48. 49. 50. try 51. sRespData = sRespDatabf.toString(); 52. String sEncryptMsg = wxcpt.Encryp

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号