11

我能够成功访问 Apple 返回的凭据,这是它的新(WWDC '19 - iOS 13)使用 Apple 库登录的一部分。

在此委托方法中访问凭据:

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“用户”凭据中硬编码用户凭据。)

4

1 回答 1

15

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


编辑应用程序传输:

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

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

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


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

于 2019-07-16T18:23:51.680 回答