内建账户 REST API
URL | HTTP | 功能 |
---|---|---|
/1.1/users | POST | 用户注册 用户连接 |
/1.1/usersByMobilePhone | POST | 使用手机号码注册或登录 |
/1.1/login | POST | 用户登录 |
/1.1/users/<objectId> | GET | 获取用户 |
/1.1/users/me | GET | 根据 sessionToken 获取用户信息 |
/1.1/users/<objectId>/refreshSessionToken | PUT | 重置用户 sessionToken |
/1.1/users/<objectId>/updatePassword | PUT | 更新密码,要求输入旧密码 |
/1.1/users/<objectId> | PUT | 更新用户 用户连接 验证 Email |
/1.1/users | GET | 查询用户 |
/1.1/users/<objectId> | DELETE | 删除用户 |
/1.1/requestPasswordReset | POST | 请求密码重设 |
/1.1/requestEmailVerify | POST | 请求验证用户邮箱 |
不 仅在移动应用上,还在其他系统中,很多应用都有一个统一的登录流程。通过 REST API 访问用户的账户让你可以简单实现这一功能。
通常来说,用户(类名 _User
)这个类的功能与其他的对象是相同的,比如都没有限制模式(Schema free)。User 对象和其他对象不同的是一个用户必须有用户名(username)和密码(password),密码会被自动地加密和存储。
username 和 email 这两个字段必须是没有重复的(大小写敏感)。
注册
注册一个新用户与创建一个新的普通对象之间的不同点在于 username 和 password 字段都是必需的。password 字段会以和其他的字段不一样的方式处理,它在储存时会被加密而且永远不会被返回给任何来自客户端的请求。
你可以让云服务自动验证邮件地址,做法是进入 云服务控制台 > 存储 > 设置 > 用户账号,勾选 用户注册时,发送验证邮件。
这项设置启用了的话,所有填写了 email 的用户在注册时都会产生一个 email 验证地址,并发回到用户邮箱,用户打开邮箱点击了验证链接之后,用户表里 emailVerified
属性值会被设为 true。你可以在 emailVerified
字段上查看用户的 email 是否已经通过验证。
你还可以在 云服务控制台 > 存储 > 设置 > 用户账号,勾选未验证邮箱的用户,禁止登录。
为了注册一个新的用户,需要向 user 路径发送一个 POST 请求,你可以加入一个新的字段,例如,创建一个新的用户有一个电话号码:
curl -X POST \
-H "X-LC-Id: {{appid}}" \
-H "X-LC-Key: {{appkey}}" \
-H "Content-Type: application/json" \
-d '{"username":"tom","password":"f32@ds*@&dsa","phone":"18612340000"}' \
https://{{host}}/1.1/users
当创建成功时,HTTP 返回为 201 Created,Location 头包含了新用户的 URL:
Status: 201 Created
Location: https://{{host}}/1.1/users/55a47496e4b05001a7732c5f
返回的主体是一个 JSON 对象,包含 objectId、createdAt 时间戳表示创建对象时间,sessionToken 可以被用来认证这名用户随后的请求:
{
"sessionToken":"qmdj8pdidnmyzp0c7yqil91oc",
"createdAt":"2015-07-14T02:31:50.100Z",
"objectId":"55a47496e4b05001a7732c5f"
}
登录
在你允许用户注册之后,在以后你需要让他们用自己的用户名和密码登录。为了做到这一点,发送一个 POST 请求到 /1.1/login
,加上 username 和 password 作为 body。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-LC-Id: {{appid}}" \
-H "X-LC-Key: {{appkey}}" \
-d '{"username":"tom","password":"f32@ds*@&dsa"}' \
https://{{host}}/1.1/login
用户也可以通过邮箱地址和密码登录,只需将 body 中的 username 换成 email:
{ "email": "[email protected]", "password": "f32@ds*@&dsa" }
类似地,将 username
换成 mobilePhoneNumber
可以通过手机号和密码登录:
{ "mobilePhoneNumber": "+86186xxxxxxxx", "password": "f32@ds*@&dsa" }