TapTap OAuth 接口
概述
TapTap OpenAPI 采用统一的 Mac Token 头部签算来传递用户授权信息。
开发者接入 SDK 单纯 TapTap 用户认证方式,在用户授权你的应用程序后,将会生成访问令牌(Access Token)。这个访问令牌在加密后会生成 Mac Token 字符串。Access Token 长期有效,只有在用户更新其账户安全信息或解除对当前应用的授权时才会失效。开发人员应妥善管理 Access Token 在其服务器上,用作与 TapTap 服务器进行后续通讯的标识。
Mac Token 生成算法见文档中的 MAC Token 算法 部分。
流程
-
移动端用 SDK 的 TapTap 登录,可以 获取 AccessToken,里面包含:
public String kid;
public String access_token;
public String token_type;
public String mac_key;
public String mac_algorithm;
public Set<String> scopeSet; -
再把移动端获取的参数发到游戏服务器,服务端签算 mac token。
-
请求
https://openapi.tap.io/account/profile/v1, header 携带mac token。
注意:当前实际返回的 kid 和 access_token 值相等,建议使用 kid。
API
当 SDK 只请求 basic_info 的权限时,请使用基础信息接口,请求 public_profile 时,请使用详细信息接口。
获取当前账户基础信息
GET https://openapi.tap.io/account/basic-info/v1?client_id=xxx
Authorization mac token
请求参数
| 字段 | 类型 | 说明 |
|---|---|---|
| client_id | string | 该应用的 Client ID,应与约定相同 |
响应参数
| 字段 | 类型 | 说明 |
|---|---|---|
| openid | string | 授权用户唯一标识,每个玩家在每个游戏中的 openid 都是不一样的,同一游戏获取同一玩家的 openid 总是相同 |
| unionid | string | 授权用户唯一标识,一个玩家在一个厂商的所有游戏中 unionid 都是一样的,不同厂商 unionid 不同 |
请求示例
替换其中的 MAC id 和 Client ID 为自己签算的 mac token 和控制台的 Client ID。
curl -s -H 'Authorization:MAC id="1/hC0vtMo7ke0Hkd-iI8-zcAwy7vKds9si93l7qBmNFxJkylWEOYEzGqa7k_9iw_bb3vizf-3CHc6U8hs-5a74bMFzkkz7qC2HdifBEHsW9wxOBn4OsF9vz4Cc6CWijkomnOHdwt8Km6TywOX5cxyQv0fnQQ9fEHbptkIJa
gCd33eBXg76grKmKsIR-YUZd1oVHu0aZ6BR7tpYYsCLl-LM6ilf8LZpahxQ28n2c-y33d-20YRY5NW1SnR7BorFbd00ZP97N9kwDncoM1GvSZ7n90_0ZWj4a12x1rfAWLuKEimw1oMGl574L0wE5mGoshPa-CYASaQmBDo3Q69XbjTs
KQ",ts="1618221750",nonce="adssd",mac="XWTPmq6A6LzgK8BbNDwj+kE4gzs="' "https://openapi.tap.io/account/basic-info/v1?client_id=<Client ID>"
获取当前账户详细信息
GET https://openapi.tap.io/account/profile/v1?client_id=xxx
Authorization mac token
请求参数
| 字段 | 类型 | 说明 |
|---|---|---|
| client_id | string | 该应用的 Client ID,应与约定相同 |
响应参数
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 用户名 |
| avatar | string | 用户头像图片地址 |
| openid | string | 授权用户唯一标识,每个玩家在每个游戏中的 openid 都是不一样的,同一游戏获取同一玩家的 openid 总是相同 |
| unionid | string | 授权用户唯一标识,一个玩家在一个厂商的所有游戏中 unionid 都是一样的,不同厂商 unionid 不同 |