天天看點

微信企業号開發可能遇到的問題

   1.編譯問題

         Jdk1.7以上(aes加解密用到)

        Myeclipse10及以上(1.6及以上編譯項目)

        Tomcat8(80端口,https)

  2.

注意事項

1.com\qq\weixin\mp\aes目錄下是使用者需要用到的接入企業微信的接口,其中WXBizMsgCrypt.java檔案提供的WXBizMsgCrypt類封裝了使用者接入企業微信的三個接口,其它的類檔案使用者用于實作加解密,使用者無須關心。sample.java檔案提供了接口的使用示例。

2.WXBizMsgCrypt封裝了VerifyURL, DecryptMsg, EncryptMsg三個接口,分别用于開發者驗證回調url、接收消息的解密以及開發者回複消息的加密過程。使用方法可以參考Sample.java檔案。

3.請開發者使用jdk1.6或以上的版本。針對org.apache.commons.codec.binary.Base64,需要導入jar包commons-codec-1.9(或comm ons-codec-1.8等其他版本),我們有提供,官方下載下傳位址:

http://commons.apache.org/proper/commons-codec/download_codec.cgi

4.異常java.security.InvalidKeyException:illegal Key Size的解決方案:

在官方網站下載下傳JCE無限制權限政策檔案(請到官網下載下傳對應的版本, 例如JDK7的下載下傳位址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html ):

下載下傳後解壓,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如果安裝了JRE,将兩個jar檔案放到%JRE_HOME% \lib\security目錄下覆寫原來的檔案,如果安裝了JDK,将兩個jar檔案放到%JDK_HOME%\jre\lib\security目錄下覆寫原來檔案。

3.

報錯java.lang.ClassNotFoundException:

java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException

 遇到這種問題是因為jar包不全,應該包含

commons-beanutils-1.8.3.jar 

commons-lang-2.5.jar 

ezmorph-1.0.6.jar 

json-lib-2.3-jdk15.jar

後來查了一下發現是包有錯,使用json常用到的包有以下六個。

1. commons-logging-1.0.4.jar  

2. commons-lang-2.3.jar  

3. commons-collections-3.2.jar  

4. commons-beanutils-1.7.0.jar  

5. json-lib-2.2.1-jdk15.jar  

6. ezmorph-1.0.4.jar  

另外如果commons-collections-3.2.jar沒有或版本不對的話會出現

org/apache/commons/collections/map/ListOrderedMap這個異常。

4.invalid signature簽名錯誤:

建議按如下順序檢查:

  1. 确認簽名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 頁面工具進行校驗。
  2. 确認config中nonceStr(js中駝峰标準大寫S), timestamp與用以簽名中的對應noncestr, timestamp一緻。
  3. 确認url是頁面完整的url(請在目前頁面alert(location.href.split('#')[0])确認),包括'http(s)://'部分,以及'?'後面的GET參數部分,但不包括'#'hash後面的部分。
  4. 确認config中的appid與用來擷取jsapi_ticket的corpid一緻。
  5. 確定一定緩存access_token和jsapi_ticket。
  6. 確定你擷取用來簽名的url是動态擷取的,動态頁面可參見執行個體代碼中php的實作方式。如果是html的靜态頁面在前端通過ajax将url傳到背景簽名,前端需要用js擷取目前頁面除去'#'hash部分的連結(可用location.href.split('#')[0]擷取,而且需要encodeURIComponent),因為頁面一旦分享,微信用戶端會在你的連結末尾加入其它參數,如果不是動态擷取目前連結,将導緻分享後的頁面簽名失敗。
  7. 我發現在消息型應用view不能填寫帶有調用jsapi的url,老提示invalid signature

        8.  調用jsapi建立企業會話接口不成功,微信web開發者工具0.4.0還不支援企業會話接口調試,另外特别注意,隻有jweixin-1.1.0.js及以後才有建立會話接口

        9.成員登陸授權,企業内部,1)登陸授權域名隻有非系統管理者才能設定;2)傳回校驗請求來源錯誤 請看企業内部------成員登入授權

        11.發送接口 1.傳回41011  缺少agentid 錯誤,親請檢查你的傳遞json是否{"touser": "**" ,"toparty":“ ”  格式是否正确,是否有"",尤其是toparty,必須與文檔提供的json完全一緻     ;  2.發給單人消息,json去掉toparty和頭totag 形如{"touser": "**" ,"msgtype": "text","agentid": 3,"text": {"content": "發"},"safe":"0"}

        12.看不到應用(1)所在的管理組是否有權限(2)重新關注企業号

        13.微信oauth2認證回調URL所對應的方法不能儲存session,或者session和二次跳轉session是兩個

           個人覺得微信跳轉到回調url,對應的request是由微信伺服器發出的,是以request拿到的session可能是伺服器的,是以我的笨的解決就是再再頁面弄個ajax請求,儲存session,和cookie