apple-sign-in - 苹果登录 : Is 'user' credential returned by Apple permanent?

标签 apple-sign-in

我能够成功访问 Apple 返回的凭据,这是它的新(WWDC '19 - iOS 13)使用 Apple 库登录的一部分。
在此委托(delegate)方法中访问凭据:

extension ViewController: ASAuthorizationControllerDelegate {
    func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
        if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
         //here is credentials . 
        }
    }
}
然后使用“用户”属性来提取用户 ID:
    credential.user 
    //returns, for example, '000046.20082df1df9a41b78cd1552979288e19.2346' dummy value
这个“用户”属性是否被理解为该特定 AppleID(可能还有该特定应用程序)的静态/永久属性?
(我正在访问一个同步 API,并希望从该 44 个字符的 Apple“用户”凭据中硬编码用户凭据。)

最佳答案

ASAuthorizationAppleIDCredential 的用户标识符属性是 Apple ID 和开发团队之间的稳定唯一标识符。应用程序撤销不会影响用户 ID 的稳定性。这也意味着,在开发团队的一组应用程序中,用户 ID 将是相同的,从而使其成为开发人员应用程序之间同步的最佳选择。

编辑应用程序传输:

将应用程序从一个开发团队转移到另一个开发团队确实会导致用户标识符发生变化,因为它的范围是每个团队的稳定用户标识符。

传输使用 Apple 登录的应用程序时的最佳做法是使用 Apple API 端点将旧团队的用户 ID 与新团队的用户 ID 映射。如果由于某种原因开发人员不使用 API 端点,AuthenticationServices 通过接受 ASAuthorizationAppleIDRequest 中的旧用户 ID 来支持应用程序传输。并返回新的用户 ID。

一般来说,AuthenticationServices 会做正确的事。但是,如果用户删除了与团队 A 关联的应用程序(并为该应用程序使用了通过 Apple 登录),然后重新安装现在与团队 B 关联的相同应用程序,则关联两个用户 ID 的唯一方法是使用 API端点。

资料来源:我是负责 Sign in With Apple 团队的一名工程师。

关于apple-sign-in - 苹果登录 : Is 'user' credential returned by Apple permanent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56767794/

相关文章:

ios - 使用 Apple 登录 - 不同的行为模拟器 VS iPhone

php - 如何将 Apple 授权码换成访问 token ?

reactjs - AWS Amplify 上未部署公共(public)目录

ios - 使用 Apple 登录 : Not able to download apple-developer-domain-association. txt

ios - 未找到模块 'apple_sign_in'

azure - 将 'Sign in with Apple' 与 Azure AD B2C 集成时,我们可以跳过电子邮件屏幕吗?

xcode - 如何在 iOS 12 或更早版本中与苹果集成登录?

ios - Firebase 身份验证尝试使用 Apple 的身份 token 会在 Xamarin.iOS 应用程序中返回 17999 INVALID_CREDENTIAL_OR_PROVIDER_ID

ios - 如何在 iOS Objective-C 中集成 'Sign in with Apple' 流?

ios - 如何支持使用 aws cognito 登录苹果?