统一账号通用注销方案接入指引 v2.5
1. 服务简介
统一账号通用注销方案是由 IEG 公共数据平台部提供的通用游戏账号注销服务,该服务适用于腾讯游戏下精品,极光,功能等所有手游业务,用于此类业务对用户做账号级别的注销操作。
1.1 适用范围
适用于所有腾讯游戏下精品,极光,功能等手游业务,详细适用范围阅读"账号注销接入必读"进行了解
1.2 具备功能
- 各业务账号注销前置条件声明(需要业务提供文案信息)
- 账号注销协议声明
- 用户实名身份校验
- 冷静期 15 天后,进行帐号注销操作,注销为帐号级别,不区分平台、小区等
- 用户帐号注销状态查询
- 用户取消注销时邮件通知
- 通知周边业务进行用户数据删除
- 通知游戏业务已经注销的账号信息(需要各游戏业务对接 IDIP 自行实现回调服务,协议按照 MSDK 版本参考下文)
1.3 注销流程示例
整个注销流程的操作流程如下:
https://gacc.odp.qq.com/uiflow/index.html
2. 接入方式
2.1 接入账号注销 H5 页面
游戏侧自己需要判断注销的一些前置条件,例如是否有工会、组织等需要退出,前置条件满足后,拉起账号注销 H5 页面
使用 MSDK WebView 功能拉起账号注销 H5 页面,并携带加密登录态及其他必要参数
WebView 功能及加密登录态获取参考:
MSDKV3 版本 https://wiki.ssl.msdk.qq.com/Android/webview.html#Android_UrlAddEncodeParam
https://wiki.ssl.msdk.qq.com/IOS/webview.html#IOS_UrlAddEncodeParam
MSDKV5 版本 https://docs.msdk.qq.com/v5/zh-CN/Module/WebView.html
注销申请提交成功后,H5 会返回一个回调,业务可根据回调来进行其他操作,回调参考 2.4
注意: 账号注销不需要分享,接入 H5 时,建议禁用分享功能 测试时一定使用测试号,如果使用自己的账号,务必在沉默期登录游戏,解除注销流程,防止账号被注销
2.2 页面地址
- 正式环境:https://gacc-account-web.odp.qq.com/writeoff.html
- 测试环境:https://gacc-account-web-test.odp.qq.com/writeoff.html
温馨提示: 测试环境的页面引入 vConsole 组件,方便用于检查传参错误等调试阶段有可能出现的问题(vConsole 默认出现在页面右下角,表现为一个绿色按钮,点击可查看网络请求,页面控制台输出的信息等等); 正式环境则没有。
2.3 请求 GET 参数
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
ADTAG | 是 | string | 固定传值为:client |
msdkVersion | 是 | string | 根据客户端 MSDK 版本取值,可取枚举值:"V3"或者"V5",默认为 V5,例如:msdkVersion=V5 |
idType | 是 | string | 根据业务账号体系来取值,可取枚举值:"gopenid"或者"openid",默认为 gopenid,例如:idType=openid(如不清楚业务使用的账号类型,可联系 leiyzhang 确认) |
msdkEncodeParam | 是 | string | MSDK V3 版本加密登录态,参考 2.1 中 V3 版本描述获取(msdkEncodeParam/itopencodeparam 参数根据 MSDK 版本,二选一即可) |
itopencodeparam | 是 | string | MSDK V5 版本加密登录态,参考 2.1 中 V5 版本描述获取(msdkEncodeParam/itopencodeparam 参数根据 MSDK 版本,二选一即可) |
os | 是 | string | 终端操作系统标示 1 - Android, 2 - iOS, 3 - Web,4 - Linux, 5 - windows, 6 - switch(nintendo) .. |
gameid | 是 | string | V5 版本业务传 MSDK 分配的游戏 id,V3 版本以及 V3 升级 V5 版本业务,传平台侧的 appid(如手 Q 微信的 appid) |
channelid | 是 | int | 登录渠道 id 1 - 微信(WeChat), 2 - 手 Q(mqq),3 - 游客(Guest),4 - Facebook,5 - GameCenter, 6 - GooglePlay, 7 - 自建账号体系(selfAccount),9 - Twitter, 10 - garena, 11 - email, 12 - phone, 13 - switch(nintendo), 14 - Line, 15 - Signin with Apple,17 - 快手(Kwai) |
outerIp | 是 | string | 客户端 ip |
完整请求示例:
V5版本示例
https://gacc-account-web.odp.qq.com/writeoff.html?ADTAG=client&os=1&gameid=11&channelid=1&itopencodeparam=d9b48147c3b809a2bebbd8b2e96c26f1&outerIp=127.0.0.1
V3版本示例
https://gacc-account-web.odp.qq.com/writeoff.html?ADTAG=client&os=1&gameid=wx1234567&channelid=1&msdkVersion=V3&idType=openid&msdkEncodeParam=d9b48147c3b809a2bebbd8b2e96c26f1&outerIp=127.0.0.1
2.4 H5 回调
注销操作执行后,页面会调用 msdk 的 jsapi,执行 jsCallNative 方法,建议在收到注销申请成功回调后,踢用户下线
V5 版本回调
如果注销成功,回调传值为一个 json 字符串:
'{"MsdkMethod":"jsCallNative","type":"gacc:write_off_success","value":"注销游戏账号申请提交成功"}';
通过 type 等于"gacc:write_off_success"可以判断注销操作成功,此时 value 是一个固定的字符串
如果注销失败,回调传值为一个 json 字符串:
'{"MsdkMethod":"jsCallNative","type":"gacc:write_off_fail","value":"$code|$datamore_seq_id|$message"}';
通过 type 等于"gacc:write_off_fail"可以判断注销操作失败,此时 value 为中包含三个信息(用|隔开),分别是:$code错误码(一个数字)、$datamore_seq_id 本次请求序列号(用于后台接口定位错误)、$message 错误信息
关于 jsCallNative 请参考官方文档:https://docs.msdk.qq.com/v5/zh-CN/Module/WebView.html
V3 版本回调
如果注销成功,回调传值为一个 json 字符串:
'{"MsdkMethod":"WGSendMessageToNative","type":"gacc:write_off_success","value":"注销游戏账号申请提交成功"}';
通过 type 等于"gacc:write_off_success"可以判断注销操作成功,此时 value 是一个固定的字符串
如果注销失败,回调传值为一个 json 字符串:
'{"MsdkMethod":"WGSendMessageToNative","type":"gacc:write_off_fail","value":"$code|$datamore_seq_id|$message"}';
通过 type 等于"gacc:write_off_fail"可以判断注销操作失败,此时 value 为中包含三个信息(用|隔开),分别是:$code错误码(一个数字)、$datamore_seq_id 本次请求序列号(用于后台接口定位错误)、$message 错误信息
和 V5 区别的地方在于 MsdkMethod 的值不同,其他一样。
3. MSDK V5 版本业务需实现 IDIP 协议
此版本使用范围为使用 MSDK V5 版本,即接入了统一账号体系,且账号类型为 gopenid 的业务,如果账号类型为原始 openid 透传的业务,参考 4. MSDK V3 版本业务需实现 IDIP 协议,并使用 MSDK V3 版本的参数接入
3.1 注销回调协议
PS:接入 MSDK V5 的业务,且账号类型为 gopenid 时,当用户经过冷静期后(冷静期统一账号侧会进行判断处理),统一账号侧会在底层更换用户 gopenid,因此游戏收到此回调时,仅需清理游戏内保存的一些数据,如果 gopenid 更换后,所有用户数据均不可见,则游戏内接到本回调后可不做任何动作,比如有些游戏存在昵称搜索的功能,则需要处理一下匿名化,gopenid 更换无法阻止昵称搜索到旧账号信息;对于游戏内的“各类关系”,例如师徒,情侣,工会等,需要游戏根据产品特性,在收到此回调时自动帮用户解除
回调协议用于将已注销账号回传给游戏业务,供业务做游戏内的逻辑处理,游戏实现回调协议后,需联系 leiyzhang 进行接入,并提供所有 area,platid 参数枚举值
统一帐号侧会在用户经过冷静期,且帐号被真正注销后(注销操作统一账号会在账号底层操作),遍历所有 platid 回调该 IDIP 指令,确保回调至游戏 server,如有特殊情况联系 leiyzhang 评估
PS:务必严格按照回调协议的输入和返回提供协议
基本信息
回调协议对接 IDIP,实现回调指令
请求串: cmd=xxxx&gameid=11&area=1&platid=0&gopenid=123456&channelid=1&deltime=1582103465
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
cmd | 是 | string | 对接 IDIP 生成 cmd 指令 |
gameid | 是 | string | MSDK 分配的游戏 id |
area | 是 | int | 服务器:1 微信,2 手 Q,3 游客,17 快手 |
platid | 是 | int | 平台:0 ios,1 安卓 |
gopenid | 是 | string | 已注销的 gopenid |
channelid | 否 | int | 注销的渠道 id 1 - 微信(WeChat), 2 - 手 Q(mqq),3 - 游客(Guest),4 - Facebook,5 - GameCenter, 6 - GooglePlay, 7 - 自建账号体系(selfAccount),9 - Twitter, 10 - garena, 11 - email, 12 - phone, 13 - switch(nintendo), 14 - Line, 15 - Signin with Apple,,17 - 快手(Kwai) |
deltime | 是 | uint32 | 实际注销的时间,Unix 时间戳 |
返回串: result=0&error_info=ok
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
result | 是 | int | 响应码,0 表示成功,非 0 为失败,响应码参考 IDIP 响应码规范 |
error_info | 是 | string | 返回信息,成功返回 ok,失败返回失败信息 |
3.2 查询玩家最近登陆时间协议
查询玩家最近登陆时间协议用于查询玩家 gopenid 级别最近一次的登陆时间,统一账号侧每天离线调用,由游戏侧实现具体查询的 IDIP 指令,并联系 leiyzhang 进行接入
统一帐号侧会每天针对已经过了冷静期的用户,进行登录时间确认,做二次 check 校验,如有特殊情况联系 leiyzhang 评估
PS:务必严格按照查询协议的输入和返回提供指令
基本信息
查询玩家最近登陆时间协议对接 IDIP,实现查询指令
请求串: cmd=xxxx&gameid=wx123456&area=1&platid=xxx&gopenid=123456
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
cmd | 是 | string | 对接 IDIP 生成 cmd 指令 |
gameid | 是 | string | 平台侧的 appid(如手 Q 微信的 appid) |
area | 是 | int | 服务器:1 微信,2 手 Q,3 游客,17 快手 |
platid | 是 | int | 平台:0 ios,1 安卓 |
gopenid | 是 | string | 用户的 gopenid |
返回串: result=0&error_info=ok&logintime=1600137371
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
result | 是 | int | 响应码,0 表示成功,非 0 为失败,响应码参考 IDIP 响应码规范 |
error_info | 是 | string | 返回信息,成功返回 ok,失败返回失败信息 |
logintime | 是 | uint64 | 玩家最近一次的登录时间,格式为 uninx 时间戳 |
3.3 发送邮件协议
发送邮件协议用于用户取消注销申请后,发送邮件给到用户,游戏实现发送协议后,需联系 leiyzhang 进行接入,并提供所有 area,platid 参数枚举值
统一帐号侧会在用户取消注销后,遍历所有 platid 回调该 IDIP 指令发送邮件通知用户,确保回调至游戏 server,如有特殊情况联系 leiyzhang 评估
PS:务必严格按照回调协议的输入和返回提供协议,邮件发送需要为 gopenid 级别,统一账号侧无法拿到小区信息,因此需游戏侧按照 gopenid 将邮件发送至用户所有小区,告知已取消注销
基本信息
发送邮件协议对接 IDIP,实现回调指令
请求串: cmd=xxxx&gameid=11&area=1&platid=0&gopenid=123456&channelid=1&cancel_time=1582103465&mail_title=xxx&mail_content=xxx
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
cmd | 是 | string | 对接 IDIP 生成 cmd 指令 |
gameid | 是 | string | MSDK 分配的游戏 id |
area | 是 | int | 服务器:1 微信,2 手 Q,3 游客,17 快手 |
platid | 是 | int | 平台:0 ios,1 安卓 |
gopenid | 是 | string | 取消注销的 gopenid |
channelid | 否 | int | gopenid 所在的渠道 id 1 - 微信(WeChat), 2 - 手 Q(mqq),3 - 游客(Guest),4 - Facebook,5 - GameCenter, 6 - GooglePlay, 7 - 自建账号体系(selfAccount),9 - Twitter, 10 - garena, 11 - email, 12 - phone, 13 - switch(nintendo), 14 - Line, 15 - Signin with Apple,,17 - 快手(Kwai) |
cancel_time | 是 | uint32 | 取消注销的时间,Unix 时间戳 |
mail_title | 是 | string | 邮件标题 |
mail_content | 是 | string | 邮件内容 |
返回串: result=0&error_info=ok
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
result | 是 | int | 响应码,0 表示成功,非 0 为失败,响应码参考 IDIP 响应码规范 |
error_info | 是 | string | 返回信息,成功返回 ok,失败返回失败信息 |
3.4 状态变更回调协议(一般无需接入此指令,需要获取用户注销状态做一些其他逻辑时,可选择接入)
状态变更回调协议用于在每次用户注销状态发生变更时,将最新的注销状态回传给业务,供业务做游戏内的一些特殊逻辑处理,游戏状态变更回调协议后,需联系 leiyzhang 进行接入,并提供所有 area,platid 参数枚举值
注销状态枚举值: 1-处于注销冷静期中, 2-已取消注销,注销流程终止, 3-冷静期结束,已正常注销
PS:务必严格按照状态变更回调协议的输入和返回提供协议
基本信息
回调协议对接 IDIP,实现回调指令
请求串: cmd=xxxx&gameid=11&area=1&platid=0&gopenid=123456&channelid=1&state=1&updatetime=1582103465
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
cmd | 是 | string | 对接 IDIP 生成 cmd 指令 |
gameid | 是 | string | MSDK 分配的游戏 id |
area | 是 | int | 服务器:1 微信,2 手 Q,3 游客,17 快手 |
platid | 是 | int | 平台:0 ios,1 安卓 |
gopenid | 是 | string | 用户的 gopenid |
channelid | 否 | int | 注销的渠道 id 1 - 微信(WeChat), 2 - 手 Q(mqq),3 - 游客(Guest),4 - Facebook,5 - GameCenter, 6 - GooglePlay, 7 - 自建账号体系(selfAccount),9 - Twitter, 10 - garena, 11 - email, 12 - phone, 13 - switch(nintendo), 14 - Line, 15 - Signin with Apple,,17 - 快手(Kwai) |
state | 是 | uint32 | 注销状态,1-处于注销冷静期中, 2-取消注销,注销流程终止 3-冷静期结束,已正常注销 |
updatetime | 是 | uint32 | 状态变更的时间,Unix 时间戳 |
返回串: result=0&error_info=ok
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
result | 是 | int | 响应码,0 表示成功,非 0 为失败,响应码参考 IDIP 响应码规范 |
error_info | 是 | string | 返回信息,成功返回 ok,失败返回失败信息 |
4. MSDK V3 版本业务需实现 IDIP 协议
4.1 注销账号协议
注销账号协议用于在玩家经过冷静期后,需要对其账号进行注销时调用,由游戏侧实现具体的注销 IDIP 指令;对于游戏内的“各类关系”,例如师徒,情侣,工会等,需要游戏根据产品特性,在收到此回调时自动帮用户解除(实际注销动作,解除关系等,由游戏 server 端实现),并联系 leiyzhang 进行接入,同时提供所有 area,platid 参数枚举值
统一帐号侧会在用户经过冷静期后,遍历所有 platid 回调该 IDIP 指令,确保回调至游戏 server,进行账号的注销操作,如有特殊情况联系 leiyzhang 评估
PS:务必严格按照注销协议的输入和返回提供协议
基本信息
注销账号协议对接 IDIP,实现注销指令
请求串: cmd=xxxx&gameid=wx123456&area=1&platid=0&openid=123456
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
cmd | 是 | string | 对接 IDIP 生成 cmd 指令 |
gameid | 是 | string | 平台侧的 appid(如手 Q 微信的 appid) |
area | 是 | int | 服务器:1 微信,2 手 Q,3 游客,17 快手 |
platid | 是 | int | 平台:0 ios,1 安卓 |
openid | 是 | string | 注销用户的 openid |
返回串: result=0&error_info=ok PS: result=-600 表示终止注销:业务收到该回调时,由于一些原因需要终止本次注销操作,例如检测到用户账号新产生了一些不满足注销条件的情况
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
result | 是 | int | 响应码,0 表示成功,非 0 为失败,响应码参考 IDIP 响应码规范 |
error_info | 是 | string | 返回信息,成功返回 ok,失败返回失败信息 |
4.2 查询玩家最近登陆时间协议
查询玩家最近登陆时间协议用于查询玩家 openid 级别最近一次的登陆时间,统一账号侧每天离线调用,由游戏侧实现具体查询的 IDIP 指令,并联系 leiyzhang 进行接入
统一帐号侧会每天针对已经过了冷静期的用户,进行登录时间确认,做二次 check 校验,如有特殊情况联系 leiyzhang 评估
PS:务必严格按照查询协议的输入和返回提供指令
基本信息
查询玩家最近登陆时间协议对接 IDIP,实现查询指令
请求串: cmd=xxxx&gameid=wx123456&area=1&platid=xxx&openid=123456
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
cmd | 是 | string | 对接 IDIP 生成 cmd 指令 |
gameid | 是 | string | 平台侧的 appid(如手 Q 微信的 appid) |
area | 是 | int | 服务器:1 微信,2 手 Q,3 游客,17 快手 |
platid | 是 | int | 平台:0 ios,1 安卓 |
openid | 是 | string | 用户的 openid |
返回串: result=0&error_info=ok&logintime=1600137371
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
result | 是 | int | 响应码,0 表示成功,非 0 为失败,响应码参考 IDIP 响应码规范 |
error_info | 是 | string | 返回信息,成功返回 ok,失败返回失败信息 |
logintime | 是 | uint64 | 玩家最近一次的登录时间,格式为 uninx 时间戳 |
4.3 发送邮件协议
发送邮件协议用于用户取消注销申请后,发送邮件给到用户,游戏实现发送协议后,需联系 leiyzhang 进行接入,并提供所有 area,platid 参数枚举值
统一帐号侧会在用户取消注销后,遍历所有 platid 回调该 IDIP 指令发送邮件通知用户,确保回调至游戏 server,如有特殊情况联系 leiyzhang 评估
PS:务必严格按照回调协议的输入和返回提供协议,邮件发送需要为 openid 级别,统一账号侧无法拿到小区信息,因此需游戏侧按照 openid 将邮件发送至用户所有小区,告知已取消注销
基本信息
发送邮件协议对接 IDIP,实现回调指令
请求串: cmd=xxxx&gameid=11&area=1&platid=0&openid=123456&cancel_time=1582103465&mail_title=xxx&mail_content=xxx
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
cmd | 是 | string | 对接 IDIP 生成 cmd 指令 |
gameid | 是 | string | 平台侧的 appid(如手 Q 微信的 appid) |
area | 是 | int | 服务器:1 微信,2 手 Q,3 游客,17 快手 |
platid | 是 | int | 平台:0 ios,1 安卓 |
openid | 是 | string | 取消注销的 openid |
cancel_time | 是 | uint32 | 取消注销的时间,Unix 时间戳 |
mail_title | 是 | string | 邮件标题 |
mail_content | 是 | string | 邮件内容 |
返回串: result=0&error_info=ok
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
result | 是 | int | 响应码,0 表示成功,非 0 为失败,响应码参考 IDIP 响应码规范 |
error_info | 是 | string | 返回信息,成功返回 ok,失败返回失败信息 |
4.4 状态变更回调协议(一般无需接入此指令,需要获取用户注销状态做一些其他逻辑时,可选择接入)
状态变更回调协议用于在每次用户注销状态发生变更时,将最新的注销状态回传给业务,供业务做游戏内的一些特殊逻辑处理,游戏状态变更回调协议后,需联系 leiyzhang 进行接入,并提供所有 area,platid 参数枚举值
注销状态枚举值: 1-处于注销冷静期中, 2-已取消注销,注销流程终止, 3-冷静期结束,已正常注销
PS:务必严格按照状态变更回调协议的输入和返回提供协议
基本信息
回调协议对接 IDIP,实现回调指令
请求串: cmd=xxxx&gameid=11&area=1&platid=0&openid=123456&channelid=1&state=1&updatetime=1582103465
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
cmd | 是 | string | 对接 IDIP 生成 cmd 指令 |
gameid | 是 | string | 平台侧的 appid(如手 Q 微信的 appid) |
area | 是 | int | 服务器:1 微信,2 手 Q,3 游客,17 快手 |
platid | 是 | int | 平台:0 ios,1 安卓 |
openid | 是 | string | 用户的 openid |
state | 是 | uint32 | 注销状态,1-处于注销冷静期中, 2-取消注销,注销流程终止 3-冷静期结束,已正常注销 |
updatetime | 是 | uint32 | 状态变更的时间,Unix 时间戳 |
返回串: result=0&error_info=ok
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
result | 是 | int | 响应码,0 表示成功,非 0 为失败,响应码参考 IDIP 响应码规范 |
error_info | 是 | string | 返回信息,成功返回 ok,失败返回失败信息 |