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

Unity Firebase安卓端Apple登录后如何获取Apple ID Token?

Unity Firebase安卓端获取Apple登录的ID Token

场景与现有代码

已在Unity Firebase安卓端实现Apple登录,代码如下:

var providerData = new FederatedOAuthProviderData
{
    ProviderId = "apple.com"
};
var provider = new FederatedOAuthProvider();
provider.SetProviderData(providerData);
await auth.SignInWithProviderAsync(provider).ContinueWith(task =>
{
    var result = task.Result;
});

问题

如何从task.Result中获取Apple ID Token?

返回数据补充

登录成功后返回的数据包含两部分:

1. 用户信息

{
"PhotoUrl": null,
"DisplayName": "",
"Email": "bangminhkiet@hoppergames.io",
"IsAnonymous": false,
"IsEmailVerified": true,
"Metadata": {
"LastSignInTimestamp": 1660117698962,
"CreationTimestamp": 1660116775373
},
"PhoneNumber": "",
"ProviderData": [
{
"PhotoUrl": null,
"UserId": "elba7GqsGccUvQiYnEZr5KTtHlv2",
"Email": "bangminhkiet@hoppergames.io",
"DisplayName": "",
"ProviderId": "firebase"
},
{
"PhotoUrl": null,
"UserId": "000435.d5a5ca436f7645f992af1e1cc4d8e97b.0728",
"Email": "bangminhkiet@hoppergames.io",
"DisplayName": "",
"ProviderId": "apple.com"
}
],
"ProviderId": "firebase",
"UserId": "elba7GqsGccUvQiYnEZr5KTtHlv2"
}

2. 额外信息

{
"Profile": {
"at_hash": "W89x3Dkr7ri-mMHu2bHdiw",
"aud": "com.m.obirix.mbgk.web",
"auth_time": 1660117696,
"email": "bangminhkiet@hoppergames.io",
"email_verified": "true",
"exp": 1660204098,
"iat": 1660117698,
"iss": "https://appleid.apple.com",
"nonce_supported": true,
"sub": "000435.d5a5ca436f7645f992af1e1cc4d8e97b.0728"
},
"ProviderId": "apple.com",
"UserName": "",
"UpdatedCredential": {
"Provider": ""
}
}

解决方案

要获取Apple ID Token,需从SignInResult的Credential属性中提取,具体代码修改如下:

await auth.SignInWithProviderAsync(provider).ContinueWith(task =>
{
    if (task.IsCompletedSuccessfully)
    {
        var result = task.Result;
        // 将凭证转换为OAuthCredential类型
        var appleOAuthCredential = result.Credential as OAuthCredential;
        if (appleOAuthCredential != null)
        {
            // 获取Apple ID Token字符串
            string appleIdToken = appleOAuthCredential.IdToken;
            // 后续可对Token进行使用或存储
        }
    }
    else
    {
        // 处理登录失败逻辑
        var exception = task.Exception;
    }
});

说明

  • SignInResult.Credential存储了第三方登录的原始凭证信息,转换为OAuthCredential后,IdToken属性即为Apple官方返回的ID Token字符串。
  • 你补充信息中的Profile是Apple ID Token解码后的JWT payload内容,而实际的Token字符串需要通过上述方式从凭证中获取。

内容的提问来源于stack exchange,提问作者Nguyen Hoai Nam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:18:42