Аутентификация на базе iOS Firebase с другим проектом

#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 Также необходимо настроить для второго проекта.