Scratch3技术分析之User API(第4篇)

我们关心以下User API:

  • 注册
  • 登陆
  • 验证邮件
  • 用户消息

注册

username: api_test2
password: api_test2llk

第1步

GET https://scratch.mit.edu/accounts/check_username/api_test2/

返回: [{"username": "api_test2", "msg": "valid username"}]

第2步

没有数据交互

第3步

接收来自 Scratch 团队的更新通知可勾选。

GET https://scratch.mit.edu/accounts/check_email/?email=wuwenjie718%40gmail.com

返回[{"msg": "valid email", "email": "wuwenjie718@gmail.com"}]

第4步

POST https://scratch.mit.edu/accounts/register_new_user/

以Form Data提交

username=api_test2&password=api_test2llk&birth_month=1&birth_year=2001&gender=male&country=China&email=wuwenjie718%40gmail.com&subscribe=true&is_robot=false&csrfmiddlewaretoken=f33VDWVgfOhFVK3nwDK4hNEDVFmjHOO3

其中csrfmiddlewaretoken是通过GET https://scratch.mit.edu/csrf_token/请求得到(set-cookie)

验证邮件

邮件验证链接为:

https://scratch.mit.edu/accounts/email_verify/WzQwNDQ2ODAxLCJ3dXdlbmppZTcxOEBnbWFpbC5jb20iLHRydWVd:1gjHzZ:N5Rkcd9rnux1qFAVQtExCFV06gw/?isRegistration=true

验证完成之后:

Scratch的易用性做得非常好。整个产品逻辑很清晰。点击ok,let's go 则进入https://scratch.mit.edu/社区。

验证完邮件后,我们还会收到一封邮件:

登陆

POST https://scratch.mit.edu/accounts/login/

请求的json数据为:{"username":"api_test2","password":"api_test2llk","useMessages":true}

后端返回: [{"username": "api_test2", "num_tries": 1, "success": 1, "msg": "", "messages": [], "id": 40446801}]

登陆之后会立刻请求GET https://scratch.mit.edu/session/

返回:

{
  "user": {
    "id": 40446801,
    "banned":  false,
    "username": "api_test2",
    "token": "12b89f5b950549ef927c2df5f5ee6fa3:u1PE_y4qIYis1GA2VY_D-RWWndw",
    "thumbnailUrl": "//cdn2.scratch.mit.edu/get_image/user/default_32x32.png",
    "dateJoined": "2019-01-15T06:14:28",
    "email": "wuwenjie718@gmail.com"

  },
  "permissions": {
    "admin": false,
    "scratcher": false,
    "new_scratcher": true,
    "social": true,
    "educator": false,
    "educator_invitee": false,
    "student": false
  },
  "flags": {
    "must_reset_password": false,
    "must_complete_registration": false,
    "has_outstanding_email_confirmation": false,
    "show_welcome": true,
    "confirm_email_banner": true,
    "unsupported_browser_banner": true
  }
}

这里包含了更为全面的用户画像信息。

如果登陆失败,则返回403错误:

[{"username": "api_test2", "num_tries": 1, "success": 0, "msg": "\u8d26\u53f7\u6216\u5bc6\u7801\u9519\u8bef\u3002", "messages": [], "id": null}]

用户消息

Scratch的新用户引导是做得非常好的。

欢迎来到Scratch!标签栏给出了新用户入门引导链接。

新用户会收到一条消息:GET https://api.scratch.mit.edu/users/api_test2/messages/count

后台返回: {"count":1}

消息接口目前是定时轮询。

消息详情

GET https://api.scratch.mit.edu/users/api_test2/messages?limit=40&offset=0

后台返回:

[{"id":20423966,"datetime_created":"2019-01-15T06:14:28.000Z","actor_username":"api_test2","actor_id":40446801,"type":"userjoin"}]

目前我们的消息还很少,不好分析,之后我们再来专门分析这部分。

用户相关的其他API

由于个人中心之类的页面,Scratch团队还没有迁移到新版的前端中,所以我们暂不分析。为了追求接口稳定性,我们待官方完成这部分工作后,再做分析。




Fork me on GitHub