Apple于2019年6月3日发布了最新的重大更新,其中一项功能是使用Apple登录。应用中提供了有关“如何使用此功能”的信息,但我可以看到任何示例源代码,以及如何在现有的iOS应用中实现此功能。
我正在寻找示例源代码,因为我不知道如何开始。
我尝试过的方法:用Apple登录
第一步是你需要 import AuthenticationServices
let appleIDProvider = ASAuthorizationAppleIDProvider()
appleIDProvider.getCredentialState(forUserID: KeychainItem.currentUserIdentifier) { (credentialState, error) in
switch credentialState {
case .authorized:
// The Apple ID credential is valid.
break
case .revoked:
// The Apple ID credential is revoked.
break
case .notFound:
// No credential was found, so show the sign-in UI.
default:
break
}
}
Run Code Online (Sandbox Code Playgroud)
步骤1
如果找到现有的iCloud钥匙串凭证或Apple ID凭证,则提示用户。实施ASAuthorizationControllerDelegate到
func performExistingAccountSetupFlows() {
// Prepare requests for both Apple ID and password providers.
let requests = [ASAuthorizationAppleIDProvider().createRequest(),
ASAuthorizationPasswordProvider().createRequest()]
// Create an authorization controller with the given requests.
let authorizationController = ASAuthorizationController(authorizationRequests: requests)
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
authorizationController.performRequests()
}
extension ViewController: ASAuthorizationControllerDelegate {
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
//here is credentials .
}
}
}
extension ViewController: ASAuthorizationControllerPresentationContextProviding {
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return self.view.window!
}
}
Run Code Online (Sandbox Code Playgroud)
第二步:
创建按钮
let authorizationButton = ASAuthorizationAppleIDButton()
authorizationButton.addTarget(self, action: #selector(handleAuthorizationAppleIDButtonPress), for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)
第三步
@objc
func handleAuthorizationAppleIDButtonPress() {
let appleIDProvider = ASAuthorizationAppleIDProvider()
let request = appleIDProvider.createRequest()
request.requestedScopes = [.fullName, .email]
let authorizationController = ASAuthorizationController(authorizationRequests: [request])
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
authorizationController.performRequests()
}
Run Code Online (Sandbox Code Playgroud)
可用性:iOS 13或更高版本
演示应用程序:Github上提供了具有钥匙串集成功能的完整的演示应用程序-https: //github.com/developerinsider/Sign-In-with-Apple-Demo
注意:我很快会用越来越多的有用信息更新答案。
希望对您有所帮助。
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |