问题标签 [apple-sign-in]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
155 浏览

ios13 - 苹果登录现有帐户

我想了解我们如何将苹果登录应用到用户已经拥有现有帐户的服务。我可以看到 Apple Sign in 为我们提供了 2 个成功的响应,

新登录的用户凭据。

现有登录的密码凭据。

如果我有一个现有的应用程序服务并且用户已经有一个电子邮件/密码帐户,例如基于令牌的身份验证,我该如何将我的新的或现有的 Apple ID 凭据与该现有帐户相关联?还是那不可能?

0 投票
3 回答
14069 浏览

apple-sign-in - 如何撤销使用 Apple 登录特定应用程序的凭据?

我们正在使用我们的应用程序测试新的“使用 Apple 登录”功能,并在最初的请求中向我们提供用户的全名和电子邮件地址(如果用户启用了这些选项)。

但是,在后续请求中,仅提供identityTokenaccessToken提供此数据。

这使得测试这项服务变得困难,因为每次我们想要测试新用户的注册时,我们都需要一个新的用户帐户。

有没有办法撤销哪些应用程序正在使用通过 Apple 登录来获取某个 Apple ID?

0 投票
4 回答
2262 浏览

ios - 当用户为 iOS 选择“隐藏我的电子邮件”选项时,使用 Apple ASAuthorizationAppleIDCredential 登录会返回随机电子邮件

当我通过苹果登录时,我第一次获得了我想要的用户的确切电子邮件地址和基本详细信息,但第二次响应时没有电子邮件字段作为响应。

我担心的是我想要用户的电子邮件地址,以便将来我可以向该特定用户发送通知电子邮件。但是苹果提供了随机创建的电子邮件,实际上并不存在。以后如何通过电子邮件联系用户?

0 投票
0 回答
2110 浏览

c# - asp.net core web api - 将“使用 Apple 登录”令牌转换为 Microsoft.AspNetCore.Identity.IdentityResult 令牌

我有一个使用 IdentityUser 令牌的带有 ASP.NET Core 后端的 iOS 应用程序,并且它可以正常使用用户名/密码登录来检索令牌,如下所示:

但现在我想添加“使用 Apple 登录”选项,这在应用程序端很容易做到,在 Apple 验证用户之后,我们得到一个已签名并包含电子邮件地址的 IdentityToken (JWT)。这看起来很简单,我可以将该 IdentityToken 传递回我的 API,并通过使用以下命令检查签名来验证它是否有效:https ://stackoverflow.com/a/34423434/1999217

但是根据我的理解(以及到期),Apple 提供的 IdentityToken 仅打算使用一次并转换为新令牌(在我的情况下为 Microsoft.AspNetCore.Identity 令牌)。

我怎样才能做到这一点?一旦我验证了 IdentityToken 并且我相信请求用户拥有传入的电子邮件地址,那么我可以检索 ApplicationUser 和 Microsoft.AspNetCore.Identity.UserManager 似乎有一个方法 SignInAsync() 但它的返回类型不是 IdentityResult 作为预期,所以它没有帮助。

我还查看了 ExternalLoginProvider 方法,但它依赖于回调,我认为它不适合这种情况,因为我有一个我可以信任的令牌。

我正在考虑获取电子邮件地址并进行即时密码重置,但感觉很狡猾。就像是:

因为这与身份验证有关,所以我觉得安全总比抱歉好。我想我的问题的核心是:这很狡猾吗?有没有更好的方法来获得只有一封电子邮件的 IdentityResult?

0 投票
6 回答
2282 浏览

ios - ASAuthorizationAppleIDButton 没有响应 touchUpInside 事件

我在最新的 Xcode 11.0 中遇到了奇怪的错误 我的代码:

选择器从未调用过,但如果我将事件更改为 touchDown,一切正常。

0 投票
1 回答
402 浏览

ios - 如果我的应用使用 AD B2C,是否需要 Apple 登录?

Apple 已更改其商店指南,以包括 Sign-In For Apple:

专门使用第三方或社交登录服务(例如 Facebook 登录、Google 登录、使用 Twitter 登录、使用 LinkedIn 登录、使用亚马逊登录或微信登录)来设置或验证用户主帐户的应用程序应用程序还必须提供“通过 Apple 登录”作为等效选项。

如果我的应用程序使用 Azure ActiveDirectory B2C 并允许通过此服务(例如 Facebook、Google)进行社交登录,那么我是否需要支持 Apple 登录?我知道这是可能的(请参阅使用 Azure Active Directory B2C 在您的应用程序中启用“使用 Apple 登录”,但我不知道我的应用程序是否会被阻止发布,直到我这样做。

用户可以在 AD B2C 上创建一个帐户。苹果还说:

如果出现以下情况,则不需要使用 Apple 登录:

  • 您的应用程序专门使用您公司自己的帐户设置和登录系统。

但这是否包括支持第三方社交登录的登录系统?

0 投票
1 回答
2562 浏览

ios - Apple 登录:如何将其用于自定义服务器端点身份验证?

我的用例是,一旦用户登录到我的应用程序,当我从我的应用程序向我的自定义服务器进行端点调用时,我使用登录产生的 Oauth 令牌对调用者进行身份验证。例如,我以这种方式使用Google 登录。

此方法(例如,使用 Google 登录)有几个有用的属性:

  1. 更新的令牌会在客户端应用程序上自动创建。

  2. 我的自定义服务器可以使用 Google 的端点轻松验证令牌的有效性。

  3. 初始令牌验证可以在端点请求处理的早期进行 - 无需访问自定义服务器数据库(如https://github.com/IBM-Swift/Kitura-Credentials中的样式)。

我的问题是:鉴于我们被告知必须将 Apple 登录合并到我们的 iOS 应用程序中(如果我们提供通用登录设施),我如何使用我的自定义服务器进行端点身份验证?

我看到了两种选择,我都不太喜欢。

首先,我可以让我的客户端应用程序向我的服务器发送 Apple 登录 id_token 并忽略 exp(到期)字段。我可以定期(显然,每天不超过一次)重新生成 id_token并将其发送回我的客户。我不喜欢这个想法,既因为忽略了令牌的到期,也因为需要定期将令牌从服务器发送到客户端。(我的应用程序使用多个登录系统,这只会造成额外的困难)。

其次,我可以让我的客户向我的服务器发送一个 Apple 登录刷新令牌。当然,我的服务器需要最初生成该刷新令牌并将其发送回客户端。我比第一个想法更喜欢这个想法。我在自定义服务器中的初始令牌验证将需要访问其数据库以查找与此令牌匹配的。我通常不能使用 Apple 端点——因为,Apple 显然会再次限制这种验证。

此外,我不太喜欢我的自定义服务器最多只能每天检查一次令牌有效性的想法。如果用户撤销应用程序的凭据,我希望我的自定义服务器能够相对较快地停止代表用户操作。

想法?


2019 年 10 月 5 日——更新到上面的第一个替代方案。在实际使用https://developer.apple.com/documentation/signinwithapplerestapi/generate_and_validate_tokens进行刷新令牌验证时,我发现它实际上并没有生成更新的 id 令牌。它正在生成一个访问令牌(但 Apple 没有定义它的用途),并正在验证刷新令牌。因此,无法将更新的 id 令牌发送到客户端 iOS 应用程序。因此,使用第一种替代方法,不能使用 id 令牌的到期日期。

19 年 10 月 10 日——更新:我写了一篇关于这个主题的博客文章——https: //medium.com/@crspybits/apple-sign-in-custom-servers-and-an-expiry-conundrum- d1ad63223870

20 年 8 月 6 日--更新:关注博客文章以及可能的前进路径,来自 Apple 的待定详细信息:https ://medium.com/@crspybits/part-ii-apple-sign-in-custom-servers-and-一个到期的难题-b3e9735dc079

0 投票
0 回答
42 浏览

apple-sign-in - 使用 Apple 生成的令牌登录会忽略过期时间

我发布到https://appleid.apple.com/auth/token以生成令牌,但它忽略了我在 client_secret 部分中传递的“exp”值,并返回给我一个 9 分钟的令牌到期。获得一个持续时间更长的 ID 令牌有什么诀窍吗?

0 投票
2 回答
10878 浏览

java - 使用 Apple Java 用户验证登录

我已经实现了新的苹果功能“使用 Apple 登录”的应用程序端,但我无法在后端使用授权码进行验证。我的后端是用 java 编写的,我无法生成 JWT 并与 Apple 服务器通信。

0 投票
1 回答
3369 浏览

swift - 使用 Apple 登录 - 应用程序访问令牌支持?

我正在考虑将现有的使用 Facebook 登录流程迁移到使用 Apple 登录,希望完全从我们的 iOS 应用程序中消除 FB 登录。

客户端似乎很简单,但是有一个主题我似乎看不到有关 Stack Overflow 的任何文档或讨论 - 使用 Apple 登录等效于 FB 应用程序访问令牌。

Facebook 登录支持不同的令牌类型(https://developers.facebook.com/docs/facebook-login/access-tokens/),目前我们的应用后端支持 2 个身份验证流程。

  1. 从最终应用程序用户开始,他们使用 Facebook 登录,将提供的客户端用户访问令牌发送到应用程序后端,后者根据 Facebook 验证令牌,然后向应用程序客户端发出应用程序特定的 JWT 令牌,该令牌用于进一步的应用程序 API 调用,直到到期。

  2. 从后端服务器组件。这些从 Facebook 请求应用访问令牌,例如

然后将应用访问令牌发送到应用后端,该后端针对 Facebook 验证令牌,然后发出一个特定于应用的 JWT 令牌,用于进一步的服务器到服务器 API 调用,直到到期。

替换上面的 1 似乎很简单,但是 2 呢?是否有一种机制可以实现与 Sign In with Apple 相同的流程?

似乎https://developer.apple.com/documentation/signinwithapplerestapi将是用于验证的 API,但是有没有办法首先生成一个等效于 Sign In with Apple 的应用程序访问令牌来验证使用这个REST API?

谢谢