czp3009 / bilibili-api

Bilibili API library for Kotlin
GNU General Public License v3.0
512 stars 50 forks source link

bug 登录时未抛出异常 #30

Closed duzhaokun123 closed 4 years ago

duzhaokun123 commented 4 years ago

版本 0.1.2

java.lang.NullPointerException: Attempt to invoke virtual method 'long com.hiczp.bilibili.api.passport.model.LoginResponse$Data$TokenInfo.getMid()' on a null object reference
    at com.hiczp.bilibili.api.passport.model.LoginResponse.getUserId(LoginResponse.kt:57)
    at com.duzhaokun123.bilibilihd.ui.LoginActivity$1$1.run(LoginActivity.java:70)

测试账号 15671920364 密码 bb123456 这个账号是在B站公开的 https://www.bilibili.com/video/av95946645/?redirectFrom=h5 但是被封禁

duzhaokun123 commented 4 years ago

返回的json

{
  "ts": 1584206212,
  "code": 0,
  "data": {
    "status": 1,
    "url": "https://passport.bilibili.com/mobile/verifytel_h5.html?mid\u003d517548681\u0026tel\u003d156****0364\u0026source\u003d2\u0026keepTime\u003d0\u0026appId\u003d878\u0026subId\u003d0\u0026ticket\u003d1"
  }
}
czp3009 commented 4 years ago

是否抛出异常只取决于 code 是否为 0.

登陆接口(v3)在需要额外登陆步骤(例如需要极验)时会始终返回 0.

所以需要使用者额外判断是否存在 data.url (这个字段会让客户端打开一个 WebView 然后通过 jsonp 实现回调).

duzhaokun123 commented 4 years ago

需要极验是是抛出异常啊

duzhaokun123 commented 4 years ago

好吧行吧,极验的code是-105