<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    wuxiren123

    如何將報表系統(tǒng)集成到微信中?

    如今,隨著信息技術的不斷發(fā)展,很多公司采用微信企業(yè)號來進行企業(yè)與員工之間的聯(lián)系。其實微信企業(yè)號中右很多獨立的應用。

    那么如何可以將報表系統(tǒng)集成到微信中呢?這里分享一下在微信企業(yè)號中創(chuàng)建獨立的報表應用,并且將微信賬號單點登錄到帆軟報表軟件FineReport的權(quán)限對接。

    報表服務器環(huán)境準備

    1、報表服務器環(huán)境要求

    報表服務器必須是能夠訪問外網(wǎng),并且如果是http協(xié)議則訪問端口不限,如果是https協(xié)議訪問端口必須包含443;同時服務器的版本必須是8.0及以上的版本;而且jdk也必須是1.6及以上的版本。

    2、微信管理插件安裝

    為了簡化微信集成,F(xiàn)ineReport開發(fā)了微信管理插件,將微信的相關配置從后臺轉(zhuǎn)為前臺可視化界面操作,實現(xiàn)了微信集成基本信息配置、內(nèi)置回調(diào)URL驗證、同步微信通訊錄并與報表用戶關聯(lián)實現(xiàn)單點登錄以及定時發(fā)送消息至微信成員。FineReport還在開發(fā)常見的管理界面。

    •  修改web.xml文件

    打開服務器報表工程WEB-INF下的web.xml,在其中新增WeiXinServer,如下:

    <servlet>
        
    <servlet-name>WeiXinServer</servlet-name>
        
    <servlet-class>com.fr.wei.plugin.weixin.web.WeiXinServlet</servlet-class>
        
    <load-on-startup>0</load-on-startup>
      
    </servlet>

      
    <servlet-mapping>
        
    <servlet-name>WeiXinServer</servlet-name>
        
    <url-pattern>/WeiXinServer</url-pattern>
      
    </servlet-mapping>

    修改后的web.xml如

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 
       xmlns
    ="http://java.sun.com/xml/ns/j2ee" 
       xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
       version
    ="2.4"> 

      
    <display-name>Template WebApp</display-name>
      
        
    <mime-mapping>
      
    <extension>msi</extension>
      
    <mime-type>application/x-msi</mime-type>
      
    </mime-mapping>

      
    <servlet>
        
    <servlet-name>ReportServer</servlet-name>
        
    <servlet-class>com.fr.web.ReportServlet</servlet-class>
        
    <load-on-startup>0</load-on-startup>
      
    </servlet>

      
    <servlet>
        
    <servlet-name>WeiXinServer</servlet-name>
        
    <servlet-class>com.fr.wei.plugin.weixin.web.WeiXinServlet</servlet-class>
        
    <load-on-startup>0</load-on-startup>
      
    </servlet>

      
    <servlet-mapping>
        
    <servlet-name>WeiXinServer</servlet-name>
        
    <url-pattern>/WeiXinServer</url-pattern>
      
    </servlet-mapping>

      
    <servlet-mapping>
        
    <servlet-name>ReportServer</servlet-name>
        
    <url-pattern>/ReportServer</url-pattern>
      
    </servlet-mapping>

    </web-app>
    • 安裝后的效果

    安裝微信管理插件后,打開報表管理平臺,管理系統(tǒng)下會增加“微信管理”,微信相關的配置管理都將在這個節(jié)點中去配置:

    同時,設置定時任務的最后一步輸出設置中,會增加“推送微信消息”:

    3、手機瀏覽器報表插件

    微信集成的企業(yè)應用中打開的只能是HTML5頁面,不能使用FineReport新版移動APP的原生解析功能。FineReport開發(fā)了手機瀏覽器HTML5瀏覽方式,實現(xiàn)手機瀏覽器中報表的自適應、參數(shù)界面分離等效果。

    4、需要commons-codec-1.9.jar包

    報表服務器請使用jdk1.6或以上的版本。需要將commons-codec-1.9.jar包拷貝到報表服務器\WEB-INF\lib下面,如果已經(jīng)存在其他版本,則可以不需要再導入;

    5、更換JCE無限制權(quán)限策略文件

    需要根據(jù)jdk版本,替換%JDK_HOME%\jre\lib\security目錄下的local_policy.jar和US_export_policy.jar這兩個jar包,此為JCE無限制權(quán)限策略文件,如果不做這步操作,會有Java.security.InvalidKeyException:illegal Key Size異常,從而不能正確進行微信AES解密。

    下載對應版本的jce,替換到%WebSphere_HOME%\AppServer\java\jre\lib\security

    消息型應用

    1、創(chuàng)建報表微信企業(yè)應用

    管理員登錄微信企業(yè)號,根據(jù)提示新建應用,創(chuàng)建后消息型應用,進入應用,可以看到應用的基本信息,其中需要關注的信息有

     

    • 應用ID:微信號中可能有很多個應用,后臺開發(fā)的時候需要根據(jù)應用ID來決定是在哪個應用中進行響應
    • 可見范圍:微信權(quán)限控制
    • 應用模式:應用模式主要分成兩種: 

    1、普通模式:這個模式下不能調(diào)用微信的接口,只能設置固定的菜單及恢復的消息;如果需要的微信應用比較簡單,菜單都是固定的,可以用這種模式,但是報表就無法綁定用戶了,查看報表的時候就需要先登錄(除非報表不做權(quán)限控制);

    2、回調(diào)模式:開發(fā)者可以通過企業(yè)號提供的接口,獲取微信用戶信息,實現(xiàn)自動回復、自定義菜單等個性化功能。

    2、回調(diào)模式設置

    原理說明:我們在應用中需要調(diào)用微信開放的接口做開發(fā),所以選擇“回調(diào)模式”,這樣微信服務器會在客戶手機和開發(fā)者服務器間架起一個橋梁,通過消息的傳遞和響應,實現(xiàn)與用戶的交互操作:

    上面這個流程走通,需要微信服務器和開發(fā)者服務器先建立通信,這樣才能構(gòu)建一個完整的鏈路。進入回調(diào)模式,開啟模式后,可以看到,下面的功能都是不可用狀態(tài),需要設置好回調(diào)URL及密碼后才能用的。

    我們點開修改,會看到有3個參數(shù),都是我們需要關注的:

    • URL:開發(fā)服務器接收微信收企業(yè)號服務器推送請求的地址,支持http或https協(xié)議,這個URL就相當于開發(fā)服務器的后臺引擎,微信服務器推送的請求都是到這個地址,另外注意,這個地址必須是外網(wǎng)可以訪問的,且如果是http協(xié)議,端口支持80等端口,https協(xié)議端口必需包含443;
    • Token:可由企業(yè)任意填寫也可以隨機獲取,用于生成簽名;
    • EncodingAESKey:用于消息體的加密,是AES密鑰的Base64編碼,點擊隨機獲取就可以獲得。

    驗證時,企業(yè)號會向驗證url發(fā)送一個get請求,例如:

    xxurl?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3×tamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D

    消息中會有四個參數(shù),并且會以AES方式加密:

    • msg_signature:消息體簽名
    • timestamp:時間戳
    • nonce:隨機數(shù)字串
    • echostr:隨機加密字符串

    開發(fā)服務器需要解析出Get請求的參數(shù),對參數(shù)進行解密,然后使用之前的Token、EncodingAESKey這兩個值進行驗證,成功后,微信服務器與開發(fā)服務器間的通信就建立起來了。
    具體步驟如下:

    進入微信管理后臺,進入應用>回調(diào)模式,修改回調(diào)URL及秘鑰,隨機生成Token和EncodingAESKey,先不要點保存;

    登陸FineReport管理平臺,點擊管理系統(tǒng)>微信管理節(jié)點:

    點擊后,我們將微信企業(yè)號的基本信息配置好,如下左圖為FineReport中的配置界面,右圖為微信中的回調(diào)URL配置界面:

    將之前在微信管理平臺中生成Token及EncodingAESKey這兩個值拷貝到左側(cè)FineReport的基本信息中;

    將企業(yè)ID及管理組秘鑰即corpid及secret填寫到FineReport基本信息中

    FineReport中微信管理節(jié)本信息填寫完畢后保存;

    接收數(shù)據(jù)URL固定,如:http://review.finedevelop.com:8081/ReportServer?op=weixin,將這個URL寫入到右邊微信企業(yè)號管理平臺的回調(diào)URL處;

    點擊右側(cè)微信的保存了,如果驗證成功,則效果如下:

    3、微信用戶與報表用戶關聯(lián)

    15年7月份FineReport與微信集成時,需要通過OAuth2接口獲取微信用戶,并且在后臺根據(jù)微信用戶匹配對應的報表用戶及密碼,實現(xiàn)報表的單點登錄。

    15年8月份對此進行了改進,在FineReport提供的微信管理中,增加微信成員的管理,可以通過界面化綁定微信成員與報表用戶,通過后臺登錄報表。

    不需要實現(xiàn)OAuth2接口獲取微信用戶、不需要后臺匹配報表用戶及密碼、也不需要在后臺實現(xiàn)單點登陸,真正實現(xiàn)無縫集成,下面就來看看是如何用的。

    進入FineReport報表管理平臺fs,點擊“微信管理”節(jié)點,除了基本信息外,增加了“微信成員管理”,點擊效果如下:

    表格中會自動讀取微信企業(yè)號通訊錄中的所有成員,并且在每次打開該頁面時刷新為最新的;

    默認“微信成員與報表用戶相同”,因為大部分情況下,微信成員名和報表用戶名是統(tǒng)一的;

    如果您的微信成員名與報表用戶名是不一樣的,此時,可以取消勾選“微信成員與報表用戶相同”設置,此時報表用戶名,可以將微信成員與報表用戶進行關聯(lián),如下圖:

    4、掛報表

    在微信企業(yè)號管理平臺中,進入應用>回調(diào)模式,設置自定義菜單:

    添加事件類型選擇跳轉(zhuǎn)到網(wǎng)頁,url鏈接規(guī)則如下:

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxx&redirect_uri=xxxxx&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect 

    鏈接中需要包含以下參數(shù):

    • appid:企業(yè)的應用ID即CorpID
    • redirect_uri:授權(quán)后重定向的回調(diào)鏈接地址,報表訪問url,需要使用urlencode對鏈接進行處理
    •  response_type:返回類型,此時固定為:code
    • scope:應用授權(quán)作用域,此時固定為:snsapi_base
    • state:重定向后會帶上state參數(shù),企業(yè)可以填寫a-zA-Z0-9的參數(shù)值
    • wechat_redirect:微信終端使用此參數(shù)判斷是否需要帶上身份信息

    例如,正常報表訪問url為:

    http://review.finedevelop.com:8081/WeiXin/ReportServer?reportlet=WeiXin/swll.cpt

    將url中ReportServer換成WeiXinServer,替換后url為

    http://review.finedevelop.com:8081/WeiXin/WeiXinServer?reportlet=WeiXin/swll.cpt

    這個連接需要進行urlencode(utf-8編碼),可以到http://51tools.info/urlencode.aspx轉(zhuǎn)換一下,編碼后url為:

    http%3a%2f%2freview.finedevelop.com%3a8081%2fWeiXin%2fWeiXinServer%3freportlet%3dWeiXin%2fswll.cpt

    最終,微信中網(wǎng)頁鏈接地址為:

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxx&redirect_uri=http%3a%2f%2freview.finedevelop.com%3a8081%2fWeiXin%2fWeiXinServer%3freportlet%3dWeiXin%2fswll.cpt&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect 

    這樣報表就掛好了,可以通過手機進入微信應用,查看效果。

    5、微信單點登錄及權(quán)限控制

    • 單點登錄

    我們在微信應用中掛上了報表,在手機上,您可以看到是不需要登陸,直接可以查看結(jié)果的。而如果您使用手機瀏覽器訪問相同的報表,您會發(fā)現(xiàn),是需要登錄的。那是因為,通過2.3將微信成員與報表用戶關聯(lián)后,通過微信企業(yè)應用進入查看報表時,在FineReport后臺,我們會使用微信的OAuth2接口進行用戶驗證并獲取對應微信成員名,然后關聯(lián)報表用戶并自動登錄,從而實現(xiàn)微信單點登陸。

    • 權(quán)限控制

    微信應用的菜單是在微信中管理,所以哪些成員可以看到的哪些報表這是在微信中控制。比如您可以創(chuàng)建多個報表應用,每個應用的查看權(quán)限選擇不同的成員或組。

    用戶在微信中打開報表,是否可以查看報表的內(nèi)容,以及可以查看的數(shù)據(jù)這部分是在FineReport報表端控制的,控制方法與PC端是一樣的,比如可以通過角色控制可查看的報表,可以在報表模板中通過sql語句通過用戶名過濾來實現(xiàn)不同用戶看到的數(shù)據(jù)不同等等。

    6、定時發(fā)送消息至成員

    開發(fā)服務器可以主動的發(fā)送消息給企業(yè)成員,比如使用FineReport定時器生成報表后,發(fā)送消息給相應的人員進行查看。進入FineReport管理平臺,添加定時任務:

    到輸出設置這步,比如我們將定時生成的結(jié)果掛在“定時結(jié)果”這個目錄下面,并且命名為test:

    通知與存檔選擇推送微信消息,例如下設置,這樣定時任務結(jié)束后,Saber這個微信成員以及產(chǎn)品部門的所有成員都可以收到消息:

    • 定時生成結(jié)果的文件名:對應發(fā)送消息的標題名
    • 企業(yè)應用ID:發(fā)消息至哪個應用,如何查看應用ID上述已經(jīng)講過了
    •  微信用戶:發(fā)消息給哪些成員,下拉框中會自動讀取微信通訊錄中的所有成員,多個成員之間用|分割,比如Jane|Saber
    • 部門ID:發(fā)消息給某個部門的所有成員,該屬性與微信用戶是并的關系,不同部門之間也用|分割
    • 消息內(nèi)容:定義消息的正文內(nèi)容
    • 定時結(jié)果訪問連接:勾選的話會在消息正文最后加上定時生成的結(jié)果連接,點擊后就可以直接打開定時結(jié)果;不選的話則只發(fā)送純文本消息。

    定時任務設置好后,比如任務每天都會執(zhí)行,每次執(zhí)行后就會推送消息給對應的成員,效果如下:

    點擊鏈接就可以看到定時生成的結(jié)果

    主頁型應用

    就是定義一個主頁url,然后打開應用的時候直接跳轉(zhuǎn)到對應的應用url界面,結(jié)合新版本的fs目錄,就可以實現(xiàn)微信集成后,打開報表應用,直接顯示出報表目錄,目錄菜單的權(quán)限就可以在報表端來控制。

    需要2016-04-01以后的報表服務器jar包,和微信管理插件

    1、創(chuàng)建報表微信企業(yè)應用

    管理員登錄微信企業(yè)號,根據(jù)提示新建企業(yè)型應用

    2、主頁型應用具體配置

    登陸FineReport管理平臺,點擊管理系統(tǒng)>微信管理節(jié)點,填寫企業(yè)id和管理組憑證密鑰:

    注:token和encodingaeskey可以不需要填寫,這兩個參數(shù)為消息型應用才需要用到。

    FineReport中微信管理節(jié)本信息填寫完畢后保存。

    主頁型應用中,設置主頁url,主頁url規(guī)則如下:

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxx&redirect_uri=xxxxx&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect 

    鏈接中需要包含以下參數(shù):

    • appid:企業(yè)的應用ID即CorpID
    •  redirect_uri:授權(quán)后重定向的回調(diào)鏈接地址,報表訪問url,需要使用urlencode對鏈接進行處理
    • response_type:返回類型,此時固定為:code
    •  scope:應用授權(quán)作用域,此時固定為:snsapi_base
    •  state:重定向后會帶上state參數(shù),企業(yè)可以填寫a-zA-Z0-9的參數(shù)值
    • wechat_redirect:微信終端使用此參數(shù)判斷是否需要帶上身份信息

    例如,fs登錄url為http://www.finereporthelp.com:8889/h5/ReportServer?op=fs

    這個連接需要進行urlencode,編碼后url為:

    http%3a%2f%2fwww.finereporthelp.com%3a8889%2fh5%2fReportServer%3fop%3dfs

    最終,微信中網(wǎng)頁鏈接地址為:

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxae62313e1fa9279b&redirect_uri=http%3a%2f%2fwww.finereporthelp.com%3a8889%2fh5%2fReportServer%3fop%3dfs&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect  

    3、微信用戶和報表用戶關聯(lián)

    點擊系統(tǒng)管理>微信管理>微信成員管理,將微信賬號和報表用戶賬號進行關聯(lián),配置就完成了:

    微信企業(yè)號管理平臺使用

    1、需要關注的參數(shù)

    • CorpID

    登錄微信企業(yè)號管理平臺,點擊設置,可以看到當前微信企業(yè)號的賬號信息,其中就有我們要的企業(yè)ID,如下圖:

    • Secret

    登錄微信企業(yè)號管理平臺,點擊設置,進入權(quán)限管理,選擇開發(fā)管理員,最下面就可以看到CorpID及開發(fā)憑據(jù)Secret:

    •  應用ID

    因為一個企業(yè)號中是可以有創(chuàng)建多個應用的,如果后臺想主動發(fā)送消息等,需要明確是發(fā)往那個應用,此時就需要應用ID,我們可以進入微信企業(yè)管理平臺,進入應用中心,點擊應用,就可以看到應用ID了:

    • 部門ID

    后臺想主動發(fā)消息給某個部門的所有成員時,會通過部門ID來指定部門,可以進入微信企業(yè)管理平臺,點擊通訊錄,鼠標移上對應的部門,點擊后面的小箭頭,就可以看到當前部門ID了:

    2、應用權(quán)限控制

    登錄微信企業(yè)號管理平臺,進入應用中心,選擇應用比如報表應用,可以看到該應用對應的應用管理組:

    點擊左側(cè)設置按鈕,進入權(quán)限管理:

    選擇應用的管理組,如我們這邊是“開發(fā)管理員”,給這個管理組開啟應用的發(fā)消息和管理的權(quán)限,這樣我們才能在開發(fā)服務器端主動的向該應用發(fā)送消息、管理菜單等操作,否則后臺調(diào)用微信接口的時候,會報沒有權(quán)限。

    posted on 2016-10-28 14:00 喝水居然長肉 閱讀(174) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 国偷自产一区二区免费视频| 女人让男人免费桶爽30分钟| 国产亚洲综合精品一区二区三区| 国产亚洲一区二区手机在线观看| 成全影视免费观看大全二| 久久免费区一区二区三波多野| 日韩一级片免费观看| 亚洲精品美女久久久久久久| 亚洲国产精品久久久久| 久久久久亚洲AV成人网| 国产真实伦在线视频免费观看| 成人浮力影院免费看| 日本免费高清视频| 免费乱理伦在线播放| 黄色成人网站免费无码av| 91福利视频免费| 免费无码成人AV在线播放不卡| 久久久WWW成人免费精品| 九九视频高清视频免费观看| 亚洲国产美女精品久久久| 亚洲人精品亚洲人成在线| 亚洲黄色在线视频| 亚洲人成电影亚洲人成9999网 | 亚洲国产精品线观看不卡| 亚洲高清在线观看| 亚洲av片劲爆在线观看| 久久久久久久综合日本亚洲| 亚洲啪啪综合AV一区| 亚洲精品亚洲人成在线观看| 亚洲无线码在线一区观看| 伊人久久精品亚洲午夜| 国产亚洲精品AA片在线观看不加载 | 免费人成在线观看网站品爱网| 热99RE久久精品这里都是精品免费| g0g0人体全免费高清大胆视频| 一区二区在线免费视频| 成全视成人免费观看在线看| 拍拍拍无挡视频免费观看1000| 99在线视频免费观看| 无码精品人妻一区二区三区免费看 | 又粗又长又爽又长黄免费视频 |