账号删除¶
2021 年 10 月,Apple 宣布,从 2022 年 1 月 31 日起,所有允许用户创建账号的应用都必须提供在应用内发起账号删除的方式。让终端用户对自己的数据拥有更多控制权,也是一种良好的设计。
2022 年 1 月 22 日,Apple 决定将截止日期延长至 2022 年 6 月 30 日。
在用户设置中显示「删除账号」按钮¶
在预置的用户设置页面中,您可以显示一个按钮,供终端用户发起账号删除。当您在项目中启用账号删除功能后,用户就可以在用户设置页面的高级设置下看到 Delete Account(删除账号)按钮。

启用此按钮的步骤:
- 在管理台中进入高级 -> 账号删除页面
- 启用该按钮,然后点击保存

请注意,如果启用此功能,您需要做好准备:每当用户在移动应用中关闭用户设置时,都可能遇到会话失效的情况。如果用户在用户设置中决定删除账号,其所有会话都会立即失效。
每次关闭用户设置时,您都必须验证会话的有效性。SDK 中的 open 方法是阻塞式的,您可以在该方法执行完成后验证用户会话是否仍然有效。以下是使用 React Native SDK 的示例:
通过 Authany SDK 打开账号删除页面¶
现在,您可以直接通过 Authany SDK 打开账号删除页面。该页面将在 WebView 中打开。

在调用该函数之前,您必须先在管理台 -> 高级 -> 账号删除中启用该按钮。
以下代码示例展示了如何通过 Authany SDK 打开账号删除页面:
SettingsActionOptions options = new SettingsActionOptions(
"<POST_DELETE_REDIRECT_URI>"
//the same redirectURI as in authentication
);
options.setColorScheme(getColorScheme());
mAuthgear.deleteAccount(options, new OnOpenSettingsActionListener() {
@Override
public void onFinished() {
mIsLoading.setValue(false);
Log.d(TAG, "deleteAccount finished");
}
@Override
public void onFailed(Throwable throwable) {
Log.d(TAG, throwable.toString());
mIsLoading.setValue(false);
setError(throwable);
}
});
已停用用户¶
当终端用户发起账号删除后,其账号将被停用,并在宽限期结束后计划删除。
已停用的用户始终处于已禁用状态,无法完成身份验证流程。is_deactivated 状态表示 is_disabled 状态是由终端用户自己(而非管理员)设置为 true 的。
计划删除¶
您可以设置宽限期,即用户账号在从系统中删除之前保持停用状态的时长。默认值为 30 天,您可以在 1 到 180 天之间选择。
通过管理台发起删除¶
终端用户账号也可以通过管理台删除。在用户管理页面中,点击移除用户按钮即可立即移除用户或计划删除。
通过 Admin API 发起删除¶
另外,如果您没有在用户设置中启用 Delete Account(删除账号)按钮,也可以自行在应用中实现该按钮。您可以选择计划删除或立即删除。
计划删除¶
您的后端服务器可以通过 Admin API 调用 scheduleAccountDeletion mutation 来发起账号删除。
示例如下:
GraphQL
mutation {
scheduleAccountDeletion(input: {
userID: "USER_ID"
}) {
user {
id
isDisabled
isDeactivated
disableReason
deleteAt
}
}
}
立即删除¶
您的后端服务器可以通过 Admin API 调用 scheduleAccountDeletion mutation 来发起账号删除。
示例如下:
GraphQL
Webhook 事件¶
您可以监听以下事件,将删除行为集成到您的应用中。
非阻塞事件
user.disableduser.reenableduser.deletion_scheduleduser.deletion_unscheduleduser.deleted
阻塞事件
user.pre_schedule_deletion
事件详情请参阅 Webhooks。