Skip to content

用户登录

HanJie edited this page May 26, 2020 · 11 revisions

登录步骤需要分三步:

  1. 获取登录页面相关动态数据。
  2. 加载验证码图片(需用到步骤 1 数据)。
  3. 用户登录(需用到步骤 1 和步骤 2 数据)。

步骤 1:获取登录页面相关动态数据

请求方法 请求地址 是否需要登录
GET https://v2ex.com/signin

返回结果:

{
  "code": 1,
  "data": {
    "keyUserName": "",	// 步骤 3 需要用到此值
    "keyPassword": "",	// 步骤 3 需要用到此值
    "keyVerCode": "",	// 步骤 3 需要用到此值
    "verUrlOnce": ""	// 步骤 2 需要用到此值
  }
}

Retrofit 请求形式:

@GET("/signin")
fun loadSignIn(): RestfulResult<SignIn>

步骤 2:加载验证码图片

请求方法 请求地址 是否需要登录
GET https://v2ex.com/_captcha

请求头

"Referer: https://v2ex.com/signin"

查询参数

参数名 参数值 类型
once 动态码,步骤 1 获得的 verUrlOnce 值。 String

返回结果:

该接口未做数据解析处理,因为该接口返回的是图片流,你可以直接从接口中获取流来加载图片。

Rereofit 请求形式:

@GET("/_captcha")
@Headers(
  "Referer: https://v2ex.com/signin"
)
fun loadVerImage(
  @Query("once") once: String
): ResponseBody

步骤 3:用户登录

请求方法 请求地址 是否需要登录
POST https://v2ex.com/signin

请求头

"Origin: https://v2ex.com"
"Referer: https://v2ex.com/signin"

表单参数

参数名 参数值 类型
{ 步骤 1 获得的 keyUserName 值 } 用户名 String
{ 步骤 1 获得的 keyPassword 值 } 用户密码 String
{ 步骤 1 获得的 keyVerCode 值 } 步骤 2 的图形验证码字符串 String
once 步骤 1 获得的 verUrlOnce String
next 写死 "/" 即可,登录后重定向的位置,这里随意 String

返回结果:

{
  "code": 1,
  "data": {
    "cookie": "",	// 用户标识 cookie,你需要将其持久化到本地,然后在框架初始化时将其返回
  }
}

Clone this wiki locally