使用iCloud身份验证方法验证用户是否在我的应用中拥有帐户

时间:2016-12-11 06:16:34

标签: android ios authentication icloud

我刚刚阅读了一篇文章,其中介绍了如何从iCloud获取令牌以便使用iOS平台执行身份验证。

我们如何将Android和iOS结合起来?

Android如何知道该用户拥有iOS帐号?

我需要哪种凭据才能要求用户验证他们是否已在iOS平台上拥有帐户?

1 个答案:

答案 0 :(得分:0)

阿列克谢,

此代码确认有人通过尝试访问iCloudKit容器登录到iCloud。第一种方法检查并发送通知,如果它失败,则由所述失败触发的第二种方法将用户分流到控制面板,以便他们可以登录iCloud。

 func isAuthorized4Cloud() {
    container = CKContainer(identifier: "iCloud.X")
    publicDB = container.publicCloudDatabase
    privateDB = container.privateCloudDatabase
    var userID: CKRecordID!
    container.fetchUserRecordID( completionHandler: { recordID, error in
        if error == nil {
            userID = recordID
            print("files_setup userID \(userID.recordName)")
            NotificationCenter.default.post(name: Notification.Name("cloudConnected"), object: nil, userInfo: nil)
        } else {
            NotificationCenter.default.post(name: Notification.Name("noCloud"), object: nil, userInfo: nil)
            print("files_setup \(error?.localizedDescription)")
        }
    })
}

在您的视图中控制器......

  NotificationCenter.default.addObserver(self, selector: #selector(noCloud), name: Notification.Name("noCloud"), object: nil)

  func noCloud(notification:NSNotification) {
    DispatchQueue.main.async {
        self.navigation.isHidden = true
        let alert = UIAlertController(title: "Stop", message: "Sorry, you need to log into iCloud ...", preferredStyle: UIAlertControllerStyle.alert)
        let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
            guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
                return
            }

            if UIApplication.shared.canOpenURL(settingsUrl) {
                UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
                    print("Settings opened: \(success)") // Prints true
                })
            }
        }
        alert.addAction(settingsAction)
        let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
        alert.addAction(cancelAction)
        self.present(alert, animated: true, completion: nil)
    }
}
相关问题