小米账号服务是基于 OAuth2.0 协议的开放授权和鉴权服务,我们旨在为第三方开发者和生态链企业提供更加完善、完全、易用的账号登录体验,以 MIUI 系统强大的用户群来为您的应用引流,并简化用户在 MIUI 平台上登录流程。我们提供世界范围内多 IDC 的服务,并支持超过 30 多个国家和地区的语言交互,服务日均请求量近 10 亿次,并常年维持在 99.99% 以上的服务可用性。
一、如何接入小米账号服务
温馨提示:接入小米账号服务之前,您需要在小米澎湃OS开发者平台上注册成为一名开发者,并创建相应类型的应用。
您可以遵照如下步骤接入小米账号服务:
什么是回调地址?
OAuth2.0 是一类基于回调的授权协议,授权服务器借助回调地址以 302 跳转形式将下发的授权码传递到您服务的相关接口,在保护您用户安全访问的同时,也保护了授权服务器的安全。一个好的回调地址设置应该是能够将下发的授权码送达到您的服务端接口,以便接下来通过授权码请求下发访问令牌,您在填写回调地址时需要注意以下事项:
- 填写的地址必须符合 URI 规范,填写后可以修改
- 您可以配置多个回调地址,多个回调地址请用半角分号“;”分隔,比如 https://mi.com/;https://id.mi.com/
- HTTP 和 HTTPS 视为不同域,比如 http://mi.com/ 和 https://mi.com/ 需要分别填写
- 不同的端口视为不同域,比如 https://www.mi.com 和 https://www.mi.com:8080 需要分别填写
- 请求传递的参数
redirect_uri
,其域名部分可以是注册时填写的回调地址的同级或子域名,路径部分可以是同级或子路径,但是 SCHEME 和端口号必须相同
回调地址示例:
假设您申请时填写的回调地址是:https://abc.com/oauth,
那么 redirect_uri
的参数可以是:
https://abc.com/oauth?x=1&y=2
https://x.abc.com/oauth?x=1&y=2
https://x.abc.com/oauth/path?x=1&y=2
不可以是:
http://abc.com/oauth?x=1&y=2 // SCHEME 不匹配
https://abc.com:8080/oauth?x=1&y=2 // 端口号不匹配
针对回调地址的详细说明,可以参考 OAuth2.0 协议原理。
二、如何获取相应权限
小米开放平台召集公司内部多个部门为开发者提供了多方面的用户数据开放接口,您可以在具体应用信息页面的开放接口列表(如下图)中点击申请相应的接口权限,请一定要详细填写申请理由,便于我们的运营人员能够第一时间审核。
三、一些必要的说明
1、什么是 Open ID
Open ID 是小米用户在您的一个 APP 范围内唯一标识,我们在下发访问令牌时直接下发 Open ID。如果您名下有多个 APP,那么同一个小米用户在这些 APP 之间的 Open ID 是不同的。
2、什么是 Union ID
Union ID 是小米用户在您开发者账号名下所有 APP 范围内唯一标识,能够跨应用标识同一个小米用户,可通过获取用户基本信息中的Union ID来区分用户的唯一性,只要是开放平台同一个开发者账号下的移动应用、网站应用,用户的Union ID是唯一的,而且是相同的,另外我们对于开发者名下创建的 APP 数量也不做限制。
3、请优先使用 SDK 接入
针对 Android 和 iOS 平台,我们提供对应的 SDK 支持,如果您的应用运行在这些平台上请求优先使用 SDK 进行接入,相对于直接请求服务端接口,SDK 接入能够拉取系统或集团内其它 APP(米家、商城)的登录态,所带来的好处就是尽量避免用户再次输入小米用户名和密码,从而提升用户的登录体验。如果确实无法接入我们的 SDK ,那么在请求我们的服务端接口时,请对参数值进行 URL Encode 处理。
四、如何获取帮助
如果您在接入过程中遇到任何问题,可以发送邮件到xiaomi-account-dev@xiaomi.com进行咨询
问题咨询须知:
为了提高问题的响应和解决效率,请您发邮件咨询的时候一定要写 APP ID (可以在应用详情页面获取),
出现的问题,以及您的联系方式如微信、手机号等以便于我们的工程师和您沟通问题