问题标签 [sign-in-with-apple]

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 回答
1587 浏览

ios - 我可以存储 Apple 的公钥来验证令牌签名吗?

为了与 Apple 实现 OAuth,我们调用了GET https://appleid.apple.com/auth/keys.

(根据https://docs.developer.pv.apple.com/documentation/signinwithapplerestapi/fetch_apple_s_public_key_for_verifying_token_signature中的文档)

结果大致如下:

我可以相信这些信息不会在没有通知的情况下更改吗?还是每次我们需要使用 Apple 的公钥时我都应该提出这个请求?

0 投票
6 回答
13243 浏览

ios - 使用 Apple 登录(iOS 应用 + 后端验证)API 返回错误“invalid_client”

我正在尝试使用 iOS 应用程序和后端实现Sign In with Apple 。目标是这样的:

  1. 用户在 iOS 应用上登录
  2. 在得到肯定响应后,应用程序调用后端的端点并移交authorizationCode
  3. 后端现在需要通过authorizationCode对苹果服务器的另一个调用来验证。

在这里我很困惑。为了进行这个调用,后端需要提供一堆参数:

网址

查询参数

JWTclient_secret

智威汤逊属性

昨天我在 Dev Portal 上为两个应用程序(A 和 B)创建了两个密钥,用它来生成秘密,今天应用程序 A 工作了,我得到了积极的回应:

正面回应

但是,B 仍然不起作用。今天我撤销了 A 的密钥并创建了一个新的,现在它不再适用于新的,但仍然适用于旧的,即使我在 Dev Portal 上删除了它。我很混乱。

响应错误

我想知道苹果是否需要一些时间索引或类似的东西。我只是想了解这是如何工作的。

0 投票
0 回答
1069 浏览

ios - 如何验证 Sign in with Apple 的 access_token?

我看到了描述

您最多可以每天验证一次刷新令牌,以确认该设备上的用户 Apple ID 在 Apple 服务器上的信誉良好。

https://developer.apple.com/documentation/signinwithapplerestapi/verifying_a_user

我对描述有两个问题:

  1. 为什么我们要验证refresh token而不是 access token确认用户的 Apple ID 在 Apple 的服务器上仍然具有良好的信誉?
  2. 文档说刷新令牌每天只能验证一次。但我可以在实践中多次验证刷新令牌。文档和实现之间是否存在冲突?

在此处输入图像描述

2019年10月17日更新:</p>

对于在其他系统上运行的应用程序,使用刷新令牌的定期成功验证来确定用户会话的生命周期。

我还在https://developer.apple.com/documentation/signinwithapplerestapi/verifying_a_user中看到了上面的描述。我认为periodic也与once a day.

现在,我存储 access_token 并为后续验证请求设置自定义过期时间。并从 iOS 客户端(getCridentialState)获取通知以删除 access_token。

0 投票
0 回答
450 浏览

ios - 使用 Apple 登录 - 第二次使用真实电子邮件注册时如何识别用户

我对文档以及与 Apple 签约时的变量描述中的内容有点困惑。假设我们有一个场景:

  1. 用户Sign in with Apple使用虚假/生成的电子邮件地址。
  2. 用户在我的应用中切换设备或使用不同的设备。
  3. 他正在做Sign in with Apple,但使用真实的电子邮件地址。

在此处输入图像描述

问题:如何知道这是我数据库中的同一个用户?

上面链接的文档表明userin ASAuthorizationAppleIDCredentialobject 是我正在寻找的答案:

var 用户:字符串

与经过身份验证的用户关联的标识符。

但 Xcode 也会在变量描述中显示这一点:

/** @abstract 与用于登录的 AppleID 关联的不透明用户 ID。此标识符将在“开发人员团队”中保持稳定,稍后可用作 @see ASAuthorizationRequest 的输入以请求用户联系信息。

只要用户与请求客户端连接,标识符就会保持稳定。当用户与身份提供者断开连接时,该值可能会发生变化。 */

打开 var 用户:字符串 { 获取 }

这实际上意味着Sign in with Apple什么as long as the user is connected with the requesting client。根据该描述,我不确定用户是否可以以某种方式取消注册或更改此值,或者这可能会在设备切换情况下发生?

到目前为止我尝试了什么...

我已经在设备和模拟器中进行了测试,并且user在开发环境中的值保持不变,但不确定它是多么糟糕 IRL ...

0 投票
1 回答
902 浏览

google-cloud-functions - 使用 Apple Android 实施登录

我正在尝试使用 Firebase 函数来实现这一点。授权部分运行良好,我的端点被调用。仍然当我尝试点击令牌端点时,我总是得到{"error":"invalid_client"}. 下面是我的带有测试密钥的 firebase 功能:

我的猜测是,不知何故,我没有正确签署 client_secret,因为每次我尝试在 jwt.io 上验证它时,它都说它的签名无效。

0 投票
1 回答
492 浏览

ios - Apple 登录域验证失败

在此处输入图像描述

我正在尝试在我的 iOS 应用程序中使用 Apple 登录功能来支持低于 iOS 13 的 iOS,我从网络上得到了使用 Apple Sign in JS 进行登录的建议。为此,我需要创建一个身份验证服务。根据博客中的说明,我完成了域验证的步骤。但无法验证域。

我正在使用子域。如前所述,我下载了文件并正确上传到 .well-known 文件夹中。尝试了更多次但没有结果。我想念什么吗?有人可以帮我吗?

0 投票
1 回答
762 浏览

hosting - 托管 Apple App Site Association 文件的最佳方式是什么?

要启用某些 Apple 应用程序功能(在这种情况下使用 Apple 登录)Apple 要求您注册关联的 Web 域。该域需要在该域的根目录中托管一个名为 apple-app-site-association(没有扩展名)的文件。

我正在寻找一种免费的方式来做到这一点。我的开发者网站由 Wix 网站建设者托管。Wix 不允许您上传没有扩展名的文件。即使他们这样做了,我也不相信他们的域系统会允许它。Wix 域遵循 https://{YourUser}.wixsite.com/{YourWebsite} 的模式。Apple 会在 https://{YourUser}.wixsite.com/ 上查找该文件,这是您无法控制的位置。我相信另一个免费的网站建设者 Squarespace 也有同样的遭遇。有人找到了 Cloudflare 解决方法,但 Cloudflare 不再适用于这两个网站。

我不知道把这个文件放在某个地方会这么痛苦。什么是最好的解决方案?我肯定不是第一个偶然发现它的人。

0 投票
1 回答
768 浏览

firebase - Firebase REST API signInWithCustomToken 和 Apple 登录提供程序

语境

  • 为 iOS 13.2 用 Swift 编写的 iOS 应用(不使用 Firebase iOS SDK)
  • 应用通过 REST 调用使用 Firebase 实时数据库(因此需要来自 Firebase 身份验证的 ID 令牌)

我正在尝试将我的 iOS 应用程序切换为使用 Apple 的“使用 Apple 登录”功能,以通过 Firebase 身份验证的“电子邮件/密码”登录提供程序替换简单的用户名/密码身份验证。

用户成功的“Apple 登录”将为我留下来自 Apple 的 JWT 令牌(身份令牌),例如这个(解码和编辑):

问题

当我使用Firebase 身份验证 REST API尝试将自定义令牌交换为 ID 和刷新令牌时,我收到以下消息(是的,我已确保令牌在使用时没有过期):

我希望 Firebase 身份验证中的新“Apple”登录方法能够解决这个问题,一旦配置好,我就可以从 Apple 传递 JWT 令牌。我错过了一步吗?

谢谢 !

0 投票
1 回答
2450 浏览

unity3d - 不允许重定向 url localhost 和 127.0.0.1 时如何在 Unity 中从 Sign in with Apple 获取代码

我正在尝试在 Unity 编辑器中实现 Sign in with Apple。我正在使用 REST API oauth 流来执行此操作。在我的其他 oauth 实现中,我已经能够将有效的重定向 url 设置为 localhost,因此我可以使用 http 侦听器在应用程序中捕获响应。但是,Apple 不允许此地址,而不是 127.0.0.1 。如何在 Unity 中获取响应代码?Sign in with Apple 太新了,到目前为止我还没有找到任何答案。所有指南都用于在 Web 客户端而非应用程序中实现登录。

0 投票
1 回答
1543 浏览

azure-ad-b2c - 使用 Apple 指南登录 - 元数据端点已被身份提供者使用

按照设置使用 Apple 登录作为自定义 OpenID Connect 身份提供者的指南,我到最后,单击保存并收到错误消息:

“在元数据端点 {my endpoint} 上找到的发行者‘ https://appleid.apple.com ’已被身份提供者使用。”

我错过了什么?指南还有效吗?

这个问题也在GitHub 上作为问题提出。