You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多iOS应用(不同App ID)共享服务器实现Apple Sign In配置咨询

同一Django服务器支持多应用Apple Sign In配置方案

Apple开发者后台配置调整

  • 扩展现有密钥的App ID关联:进入「Certificates, Identifiers & Profiles」→「Keys」,找到应用A使用的密钥,点击编辑后在「Primary App ID」区域选择「Add Additional App IDs」,将应用B的App ID添加进去。保存后,该密钥即可同时用于两款应用的Sign In验证。
  • 重新检查App ID分组配置:若之前尝试的「与现有主App ID分组」未生效,需确认两款应用均已加入同一个App Group:
    1. 在「Identifiers」→「App Groups」中创建或选择目标分组;
    2. 分别进入应用A和B的App ID配置页面,勾选「App Groups」并关联该分组;
    3. 确保两款应用的「Sign In with Apple」功能均处于启用状态,且配置中选择了对应的App Group。
  • (若使用Services ID)为应用B配置独立Services ID:如果你的Sign In流程依赖Services ID,需为B创建新的Services ID,启用「Sign In with Apple」并关联B的App ID,同时确保该Services ID的回调URL与服务器端接收地址一致。

Django服务器端代码修改

核心是调整Apple ID Token的验证逻辑,支持多应用的受众(aud)校验:

from apple_signin import verify
from jose import JWTError

def verify_apple_token(token):
    # 维护允许的应用ID列表
    allowed_client_ids = ["com.yourcompany.appA", "com.yourcompany.appB"]
    team_id = "YOUR_APPLE_TEAM_ID"
    key_id = "YOUR_APPLE_KEY_ID"
    private_key = "YOUR_PRIVATE_KEY_CONTENT"

    for client_id in allowed_client_ids:
        try:
            # 逐个尝试验证token是否匹配当前应用ID
            payload = verify(
                id_token=token,
                client_id=client_id,
                team_id=team_id,
                key_id=key_id,
                private_key=private_key
            )
            return payload
        except JWTError:
            continue
    # 所有应用ID验证失败时抛出异常
    raise ValueError("Token validation failed for all configured app IDs")
  • 注意:若使用自定义JWT解析库(而非apple_signin),需确保在验证aud字段时,检查其是否在allowed_client_ids列表中,而非仅匹配单一值。
  • 回调接口适配:如果两款应用的Sign In回调逻辑有差异,可通过解析token中的aud字段,区分处理不同应用的后续流程(如用户绑定、会话创建等)。

排查要点

  • 若之前分组未生效,优先检查密钥是否已关联应用B的App ID——这是跨应用共享密钥的核心前提;
  • 测试时捕获token验证的具体错误(如invalid_aud、invalid_kid),根据错误定位配置疏漏;
  • 确认应用B的包名/签名与Apple后台配置的App ID完全一致,避免因ID不匹配导致验证失败。

内容的提问来源于stack exchange,提问作者Olushola Oyinloye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:52:38