Как реализовать Firebase Microsoft OAuth в iOS Swift? - PullRequest
1 голос
/ 16 апреля 2019

Я довольно новичок в Swift и Firebase, и я пытаюсь заставить поставщика Microsoft OAuth работать, как описано здесь:

https://firebase.google.com/docs/auth/ios/microsoft-oauth?authuser=0

Мое приложение стабильно работает,но кнопка MSLoginTapped ничего не делает, и при отладке я вижу только то, что provider.getCredentialWith не запускается, потому что я не получаю оператор печати. ​​

В документации, похоже, было несколько ошибок, поэтому я подстроил его как можно лучше и отправил запрос на проверку документации.

Фрагмент документации Firebase:

provider.getCredentialWithUIDelegate(nil) { credential, error in
    if error != nil {
        // Handle error.
    }
    if credential != nil {
        Auth().signInAndRetrieveData(with: credential) { authResult, error in
            if error != nil {
                // Handle error.
            }
            // User is signed in.
            // IdP data available in authResult.additionalUserInfo.profile.
            // OAuth access token can also be retrieved:
            // credential.accessToken
        }
    }
}

Проблема 1: provider.getCredentialWithUIDelegate не распознан.

Проблема 2: Auth().signInAndRetrieveData не распознан.

========== ========== ========== ========== ==========

Вот что я работаю (это НЕ работает):

class LoginViewController: UIViewController {

    var ref : DatabaseReference!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func MSLoginTapped(_ sender: UIButton) {
        let provider = OAuthProvider(providerID: "microsoft.com")
        provider.getCredentialWith(nil) { (credential, error) in
            if error != nil {
                // Handle error.
                print("Failed to retreive credential.")
                return
            }
            if credential != nil {
                Auth.auth().signInAndRetrieveData(with: credential!) { authResult, error in
                    if error != nil {
                        // Handle error.
                    }
                    // User is signed in.
                    // IdP data available in authResult.additionalUserInfo.profile.
                    // OAuth access token can also be retrieved:
                    // credential.accessToken
                }
            } else {
                print("Credential is nil.")
            }
        }
    }
}

1 Ответ

1 голос
/ 23 мая 2019

столкнулся с той же проблемой.let provider = OAuthProvider (providerID: "microsoft.com")

provider является локальной переменной, getCredentialWith является асинхронным, и ARC избавится от provider .Сделайте это глобальной областью действия.

Firebase не показывает страницу подписи для microsoft.com в Swift / iOS

...