登录

新用户第一次登录即为注册账号;如果登录方式不是验证码登录 或者 小程序授权 getPhoneNumber 登录之一的话,需要绑定手机号

grant_type 说明:

grant_type 值 说明
code 验证码登录,请求参数里 code 必填
password 密码登录,适用于已注册且设置过密码的用户,请求参数里 password 必填
wechat_mp 微信公众号登录
wechat_mini 微信小程序登录,需要调用 wx.login 获取到 code,作为请求参数之一
wechat_mini_phone 微信小程序授权获取手机号登录,需要调用 wx.login 以及 getPhoneNumber,获取到 code/encryptedData/iv, 作为请求参数之一

验证码登录

获取验证码

POST /api/customers/send_code/

数据格式

{
  "mobile": "13412345678"
}

发送请求

POST /api/customers/send_code/
PAYLOAD {
  "mobile": "13412345678"
}

返回结果

状态码 204, 验证码短信发送到该手机

验证码登录

该方式适用于所有用户

POST /api/customers/login/

数据格式

{
  "mobile": [手机号],
  "code": [验证码],  // 接收到的短信验证码,一般为四位数字
  "grant_type": "code",  // 该字段可选,因为请求体里有 code 字段
}

发送请求

POST /api/customers/login/
PAYLOAD {
  "mobile": "13412345678",
  "code": "9527"
}

返回结果

{
  "id": 1234,
  "mobile": "13412345678",
  "token": "8bbc98765155e7881339bad014c4c1cbc1123444"  // 这个就是 Customer token
}

密码登录

POST /api/customers/login/

数据格式

{
  "mobile": [手机号],
  "password": [账户密码],
  "grant_type": "password",  // 该字段可选,因为请求体里有 password 字段
}

发送请求

POST /api/customers/login/
PAYLOAD {
  "mobile": "13412345678",
  "password": "passWord"
}

返回结果

{
  "id": 1234,
  "mobile": "13412345678",
  "token": "8bbc98765155e7881339bad014c4c1cbc1123444"  // 这个就是 Customer token
}

小程序快捷登录(授权 wx.getPhoneNumber 登录)

该方式适用于所有用户

GET /api/customers/login/

数据格式

{
  appid: [小程序 appid],
  js_code: [wx.login 接口获取到的 code],  // 建议每次登录前获取新的 code
  encryptedData: encryptedData, // 必填
  iv: iv, // 必填
  grant_type: "wechat_mini_phone"  // 该字段必填
}

encryptedDataiv 都是通过 open-type="getPhoneNumber" 组件获取到的返回值,具体参见 微信公众平台:获取手机号

发送请求

POST /api/customers/login/
PAYLOAD {
  "appid": "wx1234567891112131",
  "js_code": "081RyJ123456788011119875",
  "encryptedData": "enk+DCo5n8atOlZeYYgkBuesbUn2Gyg4FrLidgQd5SimHUc4pzpm8UVD2F1l**********ye9DTDrp8kx25p3vUuPaEyi4ypWt3f0SD6lcbzu6lW53KP+Ul1grLD3IevTPLFSK13lZcN/zscSkzl1XkOOxHF+6Z++How6wRpzalxJdbgG0+mRz2l7vZX**********gDv9o+1Ks1Pw==",
  "iv": "CPhIvdZN9+zp123456780G9Yw==",
  "grant_type": "wechat_mini_phone"
}

返回结果

{
  "id": 1234,
  "mobile": "13412345678",
  "token": "8bbc98765155e7881339bad014c4c1cbc1123444"  // 这个就是 Customer token
}

微信公众号登录

GET /api/customers/login/

state_key: 用户访问微信网页授权,确认授权后重定向的url的query 参数里的 state 参数值。

数据格式

{
  "state_key": [state_key],
  "grant_type": "wechat_mp"  // 该字段必填
}

发送请求

POST /api/customers/login/
PAYLOAD {
  "state_key": "12345678",
  "grant_type": "wechat_mp"
}

返回结果

情形1: 未绑定手机号

返回400错误,提示 Wechat login requires mobile number, 意味着需要进行一次绑定手机号的操作。

{
  "detail": "Wechat login requires mobile number",
}
情形2: 已绑定手过机号,正常返回登录成功的 token 等信息
{
  "id": 1234,
  "mobile": "13412345678",
  "token": "8bbc98765155e7881339bad014c4c1cbc1123444"  // 这个就是 Customer token
}

微信小程序登录

GET /api/customers/login/

state_key: 用户访问微信网页授权,确认授权后重定向的url的query 参数里的 state 参数值。

数据格式

{
  appid: [小程序 appid],
  js_code: [wx.login 接口获取到的 code],  // 建议每次登录前获取新的 code
  grant_type: "wechat_mini"  // 该字段必填
}

发送请求

POST /api/customers/login/
PAYLOAD {
  "appid": "wx1234567891112131",
  "js_code": "081RyJ123456788011119875",
  "grant_type": "wechat_mini"
}

返回结果

情形1: 未绑定手机号

返回400错误,提示 Wechat login requires mobile number, 意味着需要进行一次绑定手机号的操作。

{
  "detail": "Wechat login requires mobile number",
}
情形2: 已绑定手过机号,正常返回登录成功的 token 等信息
{
  "id": 1234,
  "mobile": "13412345678",
  "token": "8bbc98765155e7881339bad014c4c1cbc1123444"  // 这个就是 Customer token
}

绑定手机号

POST /api/customers/login/

参数说明

参数 说明
mobile 用户绑定的手机号
code 用户绑定的手机号接收到的短信验证码
grant_type wechat_mp 或者 wechat_mini 之一
state_key 微信公众号登录授权后,重定向的url 里的 state 参数,在 grant_type: "wechat_mp" 时必填
appid 微信小程序 appid, 在 grant_type: "wechat_mini" 时必填
js_code 微信小程序通过 wx.login 获取到的 code, 在 grant_type: "wechat_mini" 时必填

发送请求

小程序快捷登录 grant_type: wechat_mini
POST /api/customers/login/
PAYLOAD {
  "mobile": "13412345678",
  "code": "1234",
  "appid": "wx1234567891112131",
  "js_code": "081RyJ123456788011119875",
  "grant_type": "wechat_mini"
}
微信公众号授权登录 grant_type: wechat_mp
POST /api/customers/login/
PAYLOAD {
  "mobile": "13412345678",
  "code": "1234",
  "state_key": "12345678",
  "grant_type": "wechat_mp"
}

返回结果

{
  "id": 1234,
  "mobile": "13412345678",
  "token": "8bbc98765155e7881339bad014c4c1cbc1123444"  // 这个就是 Customer token
}

退出登录

清除本地缓存的 Customer token 即可

results matching ""

    No results matching ""