#ios #swift #firebase #firebase-authentication
#iOS #swift #firebase #firebase-аутентификация
Вопрос:
Я использую Firebase в своем приложении для iOS для аналитики, обмена облачными сообщениями… и все работает правильно. Теперь мне нужно связать приложение с другим проектом Firebase, чтобы выполнить аутентификацию Firebase. Этот проект является проектом Firebase, созданным в Google Cloud при настройке платформы Google Cloud Identity platform. Я следовал руководству Firebase, в котором объясняется, как настроить несколько проектов.
В AppDelegate
у меня есть следующий код для настройки 2 проектов:
//Configure default project
FirebaseApp.configure()
//Configure project for authentication
let plist = Bundle.main.path(forResource: "GoogleService-Info-auth", ofType: "plist")
let options = FirebaseOptions(contentsOfFile: plist!)
FirebaseApp.configure(name: "auth", options: options!)
По умолчанию GoogleService-Info.plist
и GoogleService-Info-auth.plist
присутствуют в проекте XCode. Затем в контроллере представления я сначала загружаю второе приложение:
let app = FirebaseApp.app(name: "auth")
а затем создайте объект аутентификации:
let auth = Auth.auth(app: app)
Если посмотреть auth
в отладчике, я вижу, что auth.app
он правильно настроен и ссылается на второй проект. Но, когда я делаю:
provider = OAuthProvider(providerID: "providerID")
provider.getCredentialWith(nil) { credential, error in
if error != nil {
// Handle error.
}
if credential != nil {
auth.signIn(with: credential) { authResult, error in
if error != nil {
// Handle error.
}
// User is signed in.
}
}
}
Я получаю сообщение об ошибке, что я не зарегистрировал пользовательскую схему URL в Info.plist
. Но эта схема соответствует проекту по умолчанию, а не той, которую я просил использовать. Я предположил, что, возможно, это неправильная проверка библиотеки, а также определил пользовательскую схему URL для проекта по умолчанию, но затем я получаю следующую ошибку:
[auth/operation-not-allowed] - Use of this method requires GCIP. For more information, see the [Firebase API reference](https://firebase.google.com/docs/reference/js/firebase.auth.OAuthProvider)
Это говорит мне, что поставщик OAuth не настроен. Я ничего не настроил в проекте по умолчанию, так что это правильно, но я хочу, чтобы вход выполнялся вторым, и я думаю, что библиотека этого не делает.
Аутентификация Firebase работает корректно, если я настраиваю только второй проект в приложении, поэтому я предполагаю, что существует проблема с настройкой другого приложения / проекта только для аутентификации Firebase.
Что вы думаете?
Ответ №1:
provider = OAuthProvider(providerID: "providerID", auth: auth)
устраняет проблему. OAuthProvider
Также необходимо настроить для второго проекта.