Skip to content

用户登录

HanJie edited this page May 27, 2020 · 11 revisions

登录步骤需要分三步:

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

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

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

返回结果:com.imhanjie.v2ex.api.model.SignIn

{
  "code": 1,
  "data": {
    "keyUserName": "",	// 步骤 3 需要用到此值
    "keyPassword": "",	// 步骤 3 需要用到此值
    "keyVerCode": "",	// 步骤 3 需要用到此值
    "verUrlOnce": ""	// 步骤 2 需要用到此值
  }
}
@GET("/signin")
fun loadSignIn(): RestfulResult<SignIn>

步骤 2:加载验证码图片

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

查询参数

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

返回结果:

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

@GET("/_captcha")
fun loadVerImage(
@Query("once") once: String
): ResponseBody

步骤 3:用户登录

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

表单参数

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

返回结果:com.imhanjie.v2ex.api.model.LoginInfo

{
  "code": 1,
  "data": {
    "cookie": "",	// 用户标识 cookie,你需要将其持久化到本地,然后在框架初始化时将其返回
  }
}
@POST("/signin")
@FormUrlEncoded
fun login(
  @FieldMap fields: Map<String, String>
): RestfulResult<LoginInfo>

Clone this wiki locally