From 7e668a7de703bd85feffe99fab67fcc0717836fb Mon Sep 17 00:00:00 2001 From: duzhaokun123 Date: Sun, 15 Mar 2020 17:14:52 +0800 Subject: [PATCH] fix bug --- README.md | 17 ++++++++++++++++- build.gradle | 2 +- .../api/passport/model/LoginResponse.kt | 4 ++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4e8a489..b171d41 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ # 使用 ```groovy -compile group: 'com.hiczp', name: 'bilibili-api', version: '0.1.2' +compile group: 'com.hiczp', name: 'bilibili-api', version: '0.1.3' ``` # 技术说明 @@ -102,6 +102,21 @@ login(username, password, challenge, secCode, validate) 登陆后, 可以访问全部 API(注意, 有一些明显不需要登录的 API 也有可能需要登录). +注意, 即使返回`code`为0也不一定登录成功, 例如 + +```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" + } +} +``` + +需要手动判断`data.url`是否为`null`, 尽管这种情况不多见g + 由于各种需要登陆的 API 在未登录时返回的 `code` 并不统一, 因此没有办法做自动 `token` 刷新, 自己看着办. 在真实的客户端上, 每次一打开 APP 就会访问[个人信息 API](#获取个人信息)来确定 `token` 是否仍然可用, 这就是 B站 自己的解决方案. diff --git a/build.gradle b/build.gradle index 7b5af0e..f7e7d00 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ buildscript { } group = 'com.hiczp' -version = '0.1.2' +version = '0.1.3' description = 'Bilibili Android client API library for Kotlin' apply plugin: 'kotlin' diff --git a/src/main/kotlin/com/hiczp/bilibili/api/passport/model/LoginResponse.kt b/src/main/kotlin/com/hiczp/bilibili/api/passport/model/LoginResponse.kt index 4a807de..5a93f8e 100644 --- a/src/main/kotlin/com/hiczp/bilibili/api/passport/model/LoginResponse.kt +++ b/src/main/kotlin/com/hiczp/bilibili/api/passport/model/LoginResponse.kt @@ -22,6 +22,10 @@ data class LoginResponse( var status: Int, // 0 @SerializedName("token_info") var tokenInfo: TokenInfo + @SerializedName("url") + var url: String + @SerializedName("status") + var status: int ) : Serializable { data class CookieInfo( @SerializedName("cookies")