微博第三方登錄失敗----json解析異常

  • 背景:web站點(diǎn)pc端使用第三方登錄,qq和微信沒問題,微博一直登錄失敗.
    項(xiàng)目使用Java 的SDK
  • 錯(cuò)誤日志:


    error_log.png
  • 分析:明顯看到j(luò)son解析報(bào)錯(cuò),而且跟weibo的sdk有關(guān)
  • 依賴關(guān)系:
<!--微博sdk依賴-->
<dependency>
            <groupId>com.belerweb</groupId>
            <artifactId>weibo4j-oauth2</artifactId>
            <version>2.1.1-beta2-3</version>
</dependency>
Snipaste_2018-12-20_14-44-31.png

在這里必須吐槽下微博,中央倉庫的jar包最近更新是2013年,github的上的源碼最近更新是2014年,懷疑微博可能已經(jīng)棄用Java的sdk不再維護(hù)了,當(dāng)然在服務(wù)端實(shí)現(xiàn)第三方接口調(diào)用本身就不是一個(gè)明智的決定

  • bug復(fù)現(xiàn)


    Snipaste_2018-12-20_14-53-57.png

    沒有拋異常,看下getString()方法


    Snipaste_2018-12-20_14-55-17.png

    很正常,用了toString處理,百思不得其解服務(wù)器上為什么報(bào)錯(cuò)
    直到我意識到導(dǎo)入的JSONObject的全限定名是org.json.JSONObject,而不是我們熟悉的com.alibaba.fastjson.JSONObject

    微博的sdk依賴了一個(gè)org.json的包,這個(gè)包的版本是20080701,但是工程中引入了一個(gè)org.json的包,版本是20180813

<!--<dependency>-->
            <!--<groupId>org.json</groupId>-->
            <!--<artifactId>json</artifactId>-->
            <!--<version>20080701</version>-->
<!--</dependency>-->
<dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180813</version>
</dependency>

敲黑板,劃重點(diǎn)了

Snipaste_2018-12-20_15-03-45.png

兩個(gè)版本的getString()方法的實(shí)現(xiàn)不同,20180813版中加了一個(gè)類型判斷,根據(jù)key獲取值,判斷是否為String類型,如果不是直接拋出異常
然而微博返回的數(shù)據(jù)是這樣的

String s = "{\"access_token\":\"2.00Pl2QMCUQ43qBc0de9dcbad2JuHDC\"," +
                "\"uid\":\"2013478597\",\"isRealName\":\"true\",\"expires_in\":2652228,\"remind_in\":\"2652228\"}";

expires_in是number類型,導(dǎo)致接口調(diào)用后解析數(shù)據(jù)時(shí)永遠(yuǎn)報(bào)錯(cuò)

  • 總結(jié)原因:jar包版本沖突
  • 解決方案:
<dependency>
    <groupId>com.belerweb</groupId>
    <artifactId>weibo4j-oauth2</artifactId>
    <version>2.1.1-beta2-3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<!--<dependency>-->
    <!--<groupId>org.json</groupId>-->
    <!--<artifactId>json</artifactId>-->
    <!--<version>20180813</version>-->
<!--</dependency>-->
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20080701</version>
</dependency>

實(shí)際上下面20080701的不用顯式依賴,sdk底層已經(jīng)依賴了
微博登錄失敗的問題是解決了,但是第三方登錄放在前端使用js來實(shí)現(xiàn)才是正解

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,201評論 4 61
  • 在包名下單獨(dú)建一個(gè)包 wxapi =========== import android.graphics.Bit...
    未聞椛洺閱讀 1,053評論 0 1
  • 斷斷續(xù)續(xù)花了三個(gè)禮拜 才讀完古典老師的《躍遷》,直接刷新了三觀,尤其是對個(gè)人成長的觀點(diǎn)。古典老師在書的最后...
    Dragonfly318閱讀 532評論 0 0
  • 8月12日,這個(gè)日子期待已久。 從晴悅姐書中獲取力量和啟發(fā),來了北京,邁出了這一小步,也讓我實(shí)現(xiàn)了自己人生中的一大...
    見夏知曉閱讀 352評論 0 1
  • 下了一場絨雨, 飛了一只黑鳥, 我順著翻飛的雨絲, 顫栗的樹葉看到了風(fēng)的方向。 我像個(gè)早起的歸人, 迫不及待地穿越...
    曄興閱讀 196評論 0 0

友情鏈接更多精彩內(nèi)容