Я использую Firebase SDK в своем проекте iOS. Я создаю анонимную учетную запись сразу после запуска приложения.

Для входа в facebook я использую следующий код -

let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)

Auth.auth().currentUser?.linkAndRetrieveData(with: credential)

Как мне реализовать выход? Мне нужно, чтобы пользователь вернулся к анонимной учетной записи firebase.

Должен ли я напрямую вызывать Firebase Signout и создавать новую анонимную учетную запись?

try! Auth.auth().signOut()

Auth.auth().signInAnonymously()

Или мне следует вызвать метод выхода из системы FBSDKLoginManager, сохранит ли это анонимный пользователь firebase, который был там до входа в facebook?

FBSDKLoginManager().logOut()

Или я должен отвязать провайдера?

Auth.auth().currentUser?.unlink(fromProvider: providerID!)

Каким должен быть здесь идеальный путь?

0
Namit Gupta 10 Мар 2019 в 17:20

1 ответ

Лучший ответ

Чтобы войти в систему аутентификации Firebase через Facebook, он должен войти в систему с помощью Facebook и аутентификации Firebase. Если вы хотите затем подписать этого пользователя в Firebase Authentication с другим провайдером, вам нужно только вывести его из Firebase Authentication.


Связывание и отключение провайдеров служит еще одним вариантом использования. Предположим, вы хотите разрешить пользователю входить в систему со своей учетной записью Google в дополнение к учетной записи Facebook, с которой он теперь вошел.

В этом случае вы можете оставить пользователя авторизованным, создать отдельные учетные данные для аутентификации для его учетной записи Google и свяжите двух провайдеров вместе. С этого момента, независимо от того, входит ли пользователь в систему со своим Facebook или с учетными данными Google, он будет входить в одну и ту же учетную запись Firebase Authentication.

Вызов unlink после этого позволяет отключить одного из провайдеров от учетной записи.


Обновление . Думаю, теперь я понял ...

  1. У вас был пользователь, который вошел в систему анонимно.
  2. Затем вы вошли в систему с помощью учетной записи Facebook.
  3. А затем вы вывели их из учетной записи Facebook.
  4. Теперь вы хотите вернуться к предыдущей учетной записи анонимной аутентификации.

Это невозможно. Когда вы входите в систему Facebook, он выходит из своей предыдущей учетной записи. И когда пользователь выходит из анонимной аутентификации, эту учетную запись невозможно восстановить.

Если это нормальный вариант использования вашего приложения, вам нужно будет связать учетную запись Facebook с существующей учетной записью анонимной аутентификации на шаге 2 выше (вместо того, чтобы заменять ее. ). Если вы это сделаете, вы действительно можете отключить учетную запись Facebook и вернуться (только) к провайдеру анонимной аутентификации.

1
Frank van Puffelen 10 Мар 2019 в 17:16