跳至主要内容

Game Hub上的社交认证

Aghanim支持多个社交登录提供者(例如,Apple、Discord、Facebook、Google)通过webhooks进行玩家认证。 这些 webhook 将通知您的后端登录事件,要求验证 OAuth2 授权码以授予或拒绝对 Game Hub 的访问。

要求

要使用社交登录处理来自 Aghanim 的玩家验证事件,您的服务器必须:

支持的提供者

您必须在游戏应用程序控制面板中配置每个社交提供商,并确保OAuth2流程的重定向URI处理正确。 当前支持以下提供者:

  • Apple
  • Discord
  • Google
  • Facebook
信息

如果您需要支持不同的符合 OAuth2 的提供商,请联系我们,可以根据请求集成其他提供商。

OAuth2 重定向 URI

对于每个提供商,请确保在相应的开发者控制台中添加以下重定向URI:

https://<GAME_HUB_DOMAIN>/oauth2/<PROVIDER>/callback

<GAME_HUB_DOMAIN> 替换为您的 Game Hub 域(例如,demo.aghanim.com)以及 <PROVIDER> 替换为 facebookgoogleapplediscord

提供商特定配置

信息

虽然一般的 OAuth2 流程在所有提供商中一致,但设置步骤因平台而略有不同。 详细的设置说明可以在每个提供商的开发者文档中找到。

Apple

  1. 前往 Apple 开发者门户
  2. Identifiers 下注册新的 Sign In with Apple 服务
  3. 配置您的 服务 ID重定向 URI
  4. 生成用于 OAuth2 代币交换的 client secret JWT

Discord

  1. 访问 Discord 开发者门户
  2. 创建应用程序并启用 OAuth2
  3. 设置您的重定向URI

Facebook

  1. 访问 Facebook 开发者
  2. 创建一个新应用程序(类型:Consumer
  3. 添加 Facebook 登录 产品
  4. Facebook 登录 → 设置 下配置:
    • 客户端 OAuth 登录
    • 对重定向 URI 使用严格模式
  5. 有效的 OAuth 重定向 URI 中设置您的 重定向 URI

Google

  1. 前往 Google 云控制台
  2. APIs & Services → 凭证 下创建 OAuth2 凭证
  3. 配置重定向URI

配置步骤

通过以下方式注册您的端点:

Request schema

下面是一个 player.verify Webhook 请求示例:

POST /your/webhook/uri HTTP/1.1
Content-Type: application/json
Host: your-webhook-endpoint.com
User-Agent: Aghanim/0.1.0
X-Aghanim-Signature: 2e45ed4dede5e09506717490655d2f78e96d4261040ef48cc623a780bda38812
X-Aghanim-Signature-Timestamp: 1725548450

{
"event_type": "player.verify",
"event_data": {
"method": "google",
"code": "4/0123abc...xyz"
},
"event_time": 1725548450,
"event_id": "whevt_eCacGbJVbvToOgzjXUgOCitkQE",
"idempotency_key": null,
"request_id": "d1593e9c-c291-4004-8846-6679c2e5810b",
"sandbox": false,
"trigger": "hub.login",
"transaction_id": "whtx_eCacGbJVbvT",
"context": null,
"game_id": "gm_exTAyxPsVwh"
}

事件 Schema

键名类型描述
event_idstring阿哈利姆生成的唯一事件标识符。
game_idstring您的游戏在阿哈利姆中的唯一标识符。
event_typestring事件的类型, player.verify 在此情境下。
event_timenumber以 Unix 时间戳表示的事件发生日期。
event_dataEventData包含事件特定数据的字段,其中可能包含用于继承对象的各种键值。
idempotency_keystring|null即使出现重试情况,也能确保 Webhook 操作只执行一次。 可以是 null 具体取决于事件类型。
request_idstring|null如果事件是通过 API 请求触发的,此字段将包含对应的请求 ID。
sandboxboolean标识事件是否来自沙盒测试环境的指示器。
triggerstring|nullThe trigger that caused the event to be sent.
transaction_idstring阿哈利姆生成的交易标识符。在同一交易过程中触发的多个事件可能共享相同的交易 ID。
contextEventContext|null事件的相关上下文信息。

EventContext Schema

键名类型描述
orderOrderContext|null与事件相关的订单信息(如果适用)。
playerPlayerContext|null(可选)玩家信息。如需启用,请在webhook设置中选择“添加玩家上下文”。

EventData Schema

键名类型描述
methodstring用于认证的提供商。 可以是 applediscordfacebookgoogle 之一。
codestring由提供商生成的授权码。 有关详细信息,请参见 RFC 6749 第 4.1.2 节

处理 Webhook

您的后端应:

  1. 从请求体中提取 methodcode
  2. 使用相应的提供者的 OAuth2 令牌端点,用 code 换取访问令牌。
  3. 使用访问令牌获取用户资料。
  4. 将社交帐户与数据库中的玩家匹配。
  5. 使用适当的 Webhook 响应模式接收或拒绝登录。

成功响应架构

请参考 player.verify webhook 响应文档以了解预期结构。

失败响应架构

如果验证失败,返回 200 状态码和以下 JSON 响应:

{
"status": "error",
"code": "not_found",
"message": "系统中不存在该玩家记录"
}

可能出现的错误代码列表:

  • not_found:系统中不存在该账户或玩家记录。
  • invalid_signature:请求的安全签名验证失败。
  • validation_error:请求中包含的数据格式或内容不符合要求。
  • banned:该账户或玩家已被系统封禁。

需要技术支持?
联系我们的集成技术团队: integration@aghanim.com