Разбор Back4App iOS Swift "PFUser.logInWithAuthType (inBackground: apple" метод возвращает задачу как ноль - PullRequest
1 голос
/ 12 апреля 2020

Я пытаюсь реализовать Apple Login в моем iOS Swift App. У меня уже есть регистрация вручную и вход в Facebook.

Я ввел логин Apple, он работает нормально, так как каждый раз возвращает TOKEN и USER .

Но когда я передаю его в "PFUser.logInWithAuthType (метод inBackground: apple" , это работает при регистрации нового пользователя с помощью входа Apple, но при выходе из системы и повторном входе с использованием входа Apple непосредственно , "PFUser.logInWithAuthType (inBackground: apple" возвращает задачу как nil.

Также, когда я пытаюсь войти в систему, используя Facebook или другой метод входа, и после этого, когда я выхожу из системы и войти с помощью Apple, логин работает нормально. Но когда я выхожу и авторизируюсь только с Apple, то задача возвращает nil

Я даже пытался удалить и установить приложение , по-прежнему возвращает ноль. Для работы требуется какой-то промежуточный вход в систему. Даже если возникла проблема с процессом выхода из системы, удаление должно исправить это. Я вижу, проблема в этом методе Parse

Я не уверен, я делаю это правильно. Пожалуйста, дайте мне знать. Заранее спасибо,


@available(iOS 13.0, *)
    func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
        switch authorization.credential {

            case let credentials as ASAuthorizationAppleIDCredential:

                let token = credentials.identityToken!
                let tokenString = String(data: token, encoding: .utf8)!
                let user = credentials.user

                print("TOKEN: \(tokenString)")
                print("USER: \(user)")

                if let _ = credentials.email, let _ = credentials.fullName {
                    track("Register New Account")
                    PFUser.logInWithAuthType(inBackground: "apple", authData: ["token":tokenString, "id": user]).continueWith { task -> Any? in
                        if ((task.error) != nil){
                            DispatchQueue.main.async {
                                self.hideHUD()
                                alert("Could not login.\nPlease try again.")
                                track("Error with parse login after SIWA: \(task.error!.localizedDescription)")
                            }
                            return task
                        }
                        self.fillAppleDetails(userObject: task.result!, credentials: credentials)
                        return nil
                    }
                } else {
                    track("SignIn with Existing Account")
                    PFUser.logInWithAuthType(inBackground: "apple", authData: ["token":tokenString, "id": user]).continueWith { task -> Any? in
                        if ((task.error) != nil) {
                            DispatchQueue.main.async {
                                self.hideHUD()
                                alert("Could not login.\nPlease try again.")
                                track("Error with parse login after SIWA: \(task.error!.localizedDescription)")
                            }
                            return task
                        }

                        let userObject = task.result

                        if userObject!.email == nil {
                            self.fillAppleDetails(userObject: task.result!, credentials: credentials)
                        } else {
                            DispatchQueue.main.async {
                                mustRefresh = true
                                self.navigationController?.popToRootViewController(animated: true)
                                self.delegate?.capital()
                            }
                        }

                        return nil
                    }
                }
                break

            default: break
        }
    }

...