获取messenger用户的信息

申请许可

Mixin messenger使用了一个经过修改的OAuth2协议来管理用户的认证和权限。获取权限的第一步是让你的用户访问下面这个URL

https://mixin.one/oauth/authorize?client_id=CLIENT_ID&scope=SCOPE&code_challenge=PKCE

CLIENT_ID 就是在开发者中心里面你的机器人的ID,不是7000开头那个,而是uuid格式的那个。SCOPE现在有三种

  • PROFILE:READ - 读所有公开信息,包括mixin ID,名字以及头像。

  • PHONE:READ - 用户的手机号。

  • ASSETS:READ - 所有资产列表以及转账记录。

code_challenge PKCE 是可选的,只有当你要构建一个客户端并且不想暴露你的客户端的密钥的时候时候才需要这么做。 目前唯一支持的 PKCE 方法是S256。

客户会给引导到认证页面,如果客户扫描并且允许了你的请求,客户的浏览器将会被重定向至你在mixin开发者中心里面填写的那个 OAuth_redirect url。并且携带了一个authorization code。

获取ACCESS_TOKEN来访问用户的信息

一旦你获取了authorization code,你就可以发起一个请求来获取ACCESS_TOKEN。

POST https://api.mixin.one/oauth/token
{
"client_id": "CLIENT_ID",
"code": "authorization code from step above",
"client_secret": "optional client secret",
"code_verifier": "optional PKCE code verifier"
}

你需要在client_secrete和code_verifier选一个方案。如果你是从你自己控制的服务器发出请求,那么推荐你使用client_secret模式。如果你是在一个客户端app上发起请求,那么推荐code_verifier方法,并且配合code_challenge一起用。

如果一切参数配置正确,那么你将会获得一个JSON格式的响应结果,包括access_token和用户给你的权限。用户给你的访问权限有可能比你申请的少。

获取用户信息

GET -H "Authorization: Bearer ACCESS_TOKEN" https://api.mixin.one/me
=>
{
"data": {
"type": "user",
"user_id": "773e5e77-4107-45c2-b648-8fc722ed77f5",
"name": "Team Mixin",
"identity_number": "7000"
}
}