Ошибка Firebase Auth на iOS (Unity, Xcode) - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь заставить Firebase Unity SDK работать на устройстве iOS 13. Мне удалось создать проект, но проблема в том, что я не могу зарегистрироваться или аутентифицировать пользователя.

Шаги для воспроизведения: (Что я сделал)

  1. Скачал quickstart-unity / auth / testapp project
  2. Открыт в Unity 2019.2.20f1 с iOS платформа
  3. Изменен идентификатор пакета на тот, который я зарегистрировал в консоли Firebase
  4. Поместите GoogleService-Info .plist в папке Assets / Firebase
  5. Установить параметр настроек Resolver iOS Добавить CocoaPods в проект Xcode
  6. Импортировать последний пакет Firebase Auth 6.10.0 из папки dotnet4 в проект
  7. Сделал сборку

Что я вижу в проекте Xcode:

  1. Содержание PodFile выглядит следующим образом:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'

target 'Unity-iPhone' do
  pod 'Firebase/Auth', '6.14.0'
  pod 'Firebase/Core', '6.14.0'
end
GoogleService-Info.plist также находится в иерархии проекта Xcode

Подписано и основано на моем iPhone 8 с iOS 13.

Результат: Когда я пытаюсь заполните поля email и пароль и pu sh кнопка «Создать пользователя», которая вызывает метод:

// Create a user with the email and password.
    public Task CreateUserWithEmailAsync() {
      DebugLog(String.Format("Attempting to create user {0}...", email));
      DisableUI();

      // This passes the current displayName through to HandleCreateUserAsync
      // so that it can be passed to UpdateUserProfile().  displayName will be
      // reset by AuthStateChanged() when the new user is created and signed in.
      string newDisplayName = displayName;
      return auth.CreateUserWithEmailAndPasswordAsync(email, password)
        .ContinueWithOnMainThread((task) => {
          EnableUI();
          if (LogTaskCompletion(task, "User Creation")) {
            var user = task.Result;
            DisplayDetailedUserInfo(user, 1);
            return UpdateUserProfileAsync(newDisplayName: newDisplayName);
          }
          return task;
        }).Unwrap();
    }

Я вижу эту ошибку на экране устройства и в логах Xcode:

AuthError.Failure: Firebase.FirebaseException: An internal error has occurred, print and inspect the error details for more information.

Вот полный журнал из Xcode:

https://drive.google.com/file/d/1ZQzrA67NXqM-lwNsSqT8Dgam9XiSHD9y/view?usp=sharing

Также я попытался сделать:

  1. Сборка на устройстве с более низким iOS версия.
  2. Попытка сборки с версиями Unity 2019.1.11 и 2019.1.13
  3. Попытка импорта GoogleService-Info.plist напрямую в проект Xcode
  4. Tried Firebase SDK Версия 6.8.0
  5. Попытка добавить [FIRApp configure] вручную
  6. Ничего не получалось.

Консоль Firebase настроена для проекта и содержит два приложения android и iOS с разными идентификаторами пакетов. Android версия работает отлично, проверено много раз.

Версия редактора Unity: 2019.2.20f1

Версия Firebase Unity SDK: 6.10.0

Используемые плагины Firebase: Auth

Дополнительные SDK, которые мы используем (Facebook, AdMob и др. c.): Нет

Платформа, на которой мы используем редактор Unity: Ma c

Платформа, которую мы используем нацелены: iOS

Время выполнения сценариев: IL2 CPP

Версия Xcode: 11 (самая последняя)
CocoaPods: Последняя версия

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

По крайней мере, я смог решить проблему. Вот описание того, как я это исправил.

Как я упоминал выше, Unity экспортировал PodFile следующим образом:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'

target 'Unity-iPhone' do
  pod 'Firebase/Auth', '6.14.0'
  pod 'Firebase/Core', '6.14.0'
end

Так что это означает, что Firebase Unity SDK 6.10.0 требует Pods версии 6.14.0 , При сборке с этими модулями я видел ошибку, упомянутую выше:

[SA LOG] CreateUserWithEmailAndPasswordAsync encountered an error: System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> Firebase.FirebaseException: An internal error has occurred, print and inspect the error details for more information.
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
---> (Inner Exception #0) System.AggregateException: One or more errors occurred. ---> Firebase.FirebaseException: An internal error has occurred, print and inspect the error details for more information.
   --- End of inner exception stack trace ---
---> (Inner Exception #0) Firebase.FirebaseException: An internal error has occurred, print and inspect the error details for more information.<---
<---

Как вы можете видеть, эта ошибка ничего не говорит.

После долгих исследований я заметил, что на веб-сайте CocoaPods есть более новые версии Firebase pods, поэтому я изменил свой PodsFile, как это вручную, и установил Pod с помощью терминала:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'

target 'Unity-iPhone' do
  pod 'FirebaseAnalytics', '~> 6.2'
  pod 'FirebaseAuth', '~> 6.4'
  pod 'FirebaseCore', '~> 6.6'
end

После сборки мне удалось получить читабельную человеческую ошибку, которая говорит:

Response body: {
  "error": {
    "code": 400,
    "message": "API key expired. Please renew the API key.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.Help",
        "links": [
          {
            "description": "Google developer console API key",
            "url": "https://console.developers.google.com/project/37062923653/apiui/credential"
          }
        ]
      }
    ]
  }
}

Я обновил API введите Google Developer Console, как об ошибке, и теперь все работает хорошо.

Вывод:

Эта проблема не была связана с Firebase Unity SDK 6.10.0 и 6.8.0, а также с этим не было связано с Parse DLL. Просто проблема заключалась в том, что более старые версии 6.14.0 для Firebase Pod не давали читабельной ошибки, поэтому я не мог понять, что происходит. После использования последних модулей Firebase я смог понять причину ошибки.

Спасибо всем, кто откликнулся на мою проблему.

0 голосов
/ 06 февраля 2020

вам нужно проверить файл Xcode Info.Plist, там нужно добавить ключ для входа в Google. Ссылка

также смотрите, что в строке журналов 3 необходимо удалить один ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...