问题标签 [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 回答
1186 浏览

xcode - 在范围内找不到 SignInWithAppleButton (SwiftUI 2)

我正在 SwiftUI 应用程序(iOS 14、SwiftUI 2)中实现 Sign In With Apple。我正在导入 AuthenticationServices 框架。应用构建成功,可以在 iOS 设备或模拟器上运行。但我无法在 Preview / Canvas 中预览视图(设计视图会更容易)。

知道为什么吗?谢谢阿克塞尔

PS:Xcode 12 beta 6,macOS Big Sur beta 5

0 投票
0 回答
134 浏览

ios - 重置使用 Apple 登录并“忘记”用户选择

我在一些应用程序上使用苹果登录并发现了一个问题:

如果用户选择“隐藏我的电子邮件”,然后退出并尝试再次登录,他们将无法选择是再次隐藏还是显示,它只是继续使用匿名电子邮件。

就我而言,当电子邮件被隐藏时,应用程序的某些方面不起作用,因此我们鼓励用户分享他们的电子邮件。

我需要用户能够注销然后“撤消”隐藏,但不清楚如何执行此操作,或者是否可以通过编程方式执行此操作。

0 投票
0 回答
247 浏览

ios - 如何使用 Firebase Auth 将 Sign in with Apple 凭据从 App Clip 迁移到父应用

我在应用程序中使用 Sign in with Apple 和 Firebase Auth。它按预期工作。

我也在开发一个 App Clip。它与父应用程序中的工作方式相同,但我想在用户迁移到父应用程序时迁移凭据。这一切都很好,但为了让用户登录到 Auth,它需要token创建一个OAuthProvider.credential.

文档说我们应该将凭证存储到userId共享用户默认值。但我不想将凭证存储在这里。

还有一篇文章使用共享钥匙串实现跨应用身份验证,不幸的是,它不适用于 App Clips。

有谁知道如何使用 Firebase Auth 将使用 Apple 凭据从 App Clip 迁移到父应用程序?

0 投票
1 回答
334 浏览

ios - 使用 Apple 登录刷新令牌验证仅返回访问令牌

我在我的服务器中使用AppleAuth npm 包在使用 Apple 登录过程中向 Apple 的服务器提交令牌请求。(这是基于 pub.dev 中的sign_in_with_apple 包提供的示例服务器代码)提交授权代码以获取我的第一个访问和刷新令牌没有问题。

但是,当我尝试测试我的应用程序如何获取新的刷新令牌时,当我向https://appleid.apple.com/auth/token提交 POST 请求并grant_type设置为refresh_token响应时,我得到的响应不同于拥有grant_type设置为authorization_code.

我查看了包的源代码,对于它的AppleAuth(myConfig).refreshToken(myRefreshToken)(<- 伪代码大声笑),POST 有效负载的唯一区别是:

虽然带有授权代码的初始请求同时返回访问令牌和刷新令牌,但出于某种原因,刷新令牌请求仅返回访问令牌。我真的不认为这是导致错误的包,我也看不到我的代码将如何成为源代码,因为上面的代码是唯一的区别。

我尝试传递它在新的刷新令牌请求中返回的访问令牌,以测试我是否可以在将来需要时获取新的刷新令牌,但它返回 400 状态错误。

我在这里错过了什么吗?刷新令牌请求没有返回新的刷新令牌是否有原因?还是我完全错过了有关流程/流程应该如何工作的东西?我正在尝试为“每天检查一次刷新令牌以确认用户在 Apple 的服务器上的信誉良好”这一过程的一部分。

在这一点上,我真的被困在该怎么做上。我可以将 identity_token.sub 字段保存在我的数据库中以检查我的用户是否已登录,但当然我想确保我的用户的苹果 ID 在苹果中仍然有效,并且他们没有撤销访问权限。可能是因为我太早尝试获取新的 refresh_token,Apple 只返回了 access_token?

哦,还有,该应用程序本身是一个 Flutter 应用程序,我正在我的 iPhone 11 上测试所有这些,所以它不是 Android/Web 流程。

0 投票
1 回答
231 浏览

ios - 使用故事板登录苹果 [SWIFT - Xcode11]

我想使用故事板将登录与苹果按钮集成,因为它很难以编程方式完成,因为我有一个现有的登录表单用户界面。使用 facebook google 等按钮,当我搜索时,我偶然发现了这个:

https://medium.com/takeaway-tech/sign-in-with-apple-storyboard-version-698c650956e7,它在步骤中说明

“在你的故事板中,添加一个视图对象,并将控件的类值设置为 Xcode 的身份检查器中的 ASAuthorizationAppleIDButton”有人可以在图像中显示如何实现这一点的步骤吗?抱歉,我在编写 swift iOS 方面还是个新手。如果有人可以演示此控件类值的工作原理,将不胜感激,谢谢。

0 投票
1 回答
332 浏览

python - 我试图使用 python 和 django 1.9 为苹果发送身份验证请求,但总是给我 unsupported_grant_type

我正在尝试使用 Python 和 Django 1.9 为苹果发送身份验证请求,但总是给我unsupported_grant_type

我如何生成我的client_secret

我正在向苹果发送请求,但总是给我这个错误:

0 投票
1 回答
264 浏览

ios - 使用 Apple 登录 - 交换标识符 - 请求无效

我们尝试在 2 个团队之间交换“Sign in with apple”,我们进行如下操作:

旧团队为新团队生成 transfer_sub,请求(https://developer.apple.com/documentation/sign_in_with_apple/transferring_your_apps_and_users_to_another_team)如下所示:

这非常有效,旧团队收到一个 transfer_sub 并将其交给新团队。

新团队通过以下请求 ( https://developer.apple.com/documentation/sign_in_with_apple/bringing_new_apps_and_users_into_your_team ) 获取新 ID:

不幸的是,这不起作用,因为有一个错误返回:

有谁知道如何使降级有效?

0 投票
1 回答
193 浏览

ios - 使用 Apple 自定义按钮登录

我在我的 iOS 应用程序中使用 Apple 登录。我想根据语言环境本地化按钮标题的语言。它适用于苹果支持的语言,但是当区域设置语言是非苹果支持的语言时,是否可以本地化按钮标题。

eg:立陶宛语,苹果不支持。使用该语言时,系统语言为英语。

我刚刚阅读了有关自定义 Apple 登录按钮选项的信息,这种本地化是否可以在自定义按钮中实现?或任何其他方式来解决这个问题!

0 投票
1 回答
155 浏览

swift - 用户凭证 - 使用 Apple 登录 (SwiftUI)

我正在测试通过Sign In With Apple使用 Firebase 注册用户。我有可以在这里查看的基本设置。

在我Auth.auth().sign(_:)的 with credential 方法中,我试图从中提取.fullNameappleIDCredential供以后使用以识别用户。

这是我的:didCompleteWithAuthorization委托方法中的代码func authorizationController(_:)

我在 上使用.descriptionget-only 方法.fullName来获取返回凭证的文本表示,这适当地是身份验证时用户的全名。

但最后displayName包括文字 givenName 和 familyName 前缀,即;

我尝试将字符串拆分为四个元素的数组,然后进行过滤,但没有运气。

我想David Example从凭据返回,这是身份验证时的用户名。

解决方案

0 投票
1 回答
374 浏览

swift - SwiftUI:启动时检查用户身份验证

我很好奇如何在启动我的应用程序时检查用户身份验证。在我的应用程序委托中,我正在执行以下操作。该loggedIn变量将根据用户当前是否使用“Sign In With Apple”按钮进行设置

由于某种原因,上面的loggedInvar 总是返回 false。我知道这与forUserID: userID!不返回任何东西有关。但它适用于其他观点......