Firebase вход в Google как пользователи при аутентификации

#firebase #xamarin #firebase-authentication #google-signin

#firebase #xamarin #firebase-аутентификация #google-вход

Вопрос:

Я разрабатываю Xamarin.Приложение Forms.

Я успешно реализовал вход в Google благодаря плагину NuGet .GoogleClient.

Проблема в том, что я хочу изменить правила проекта Firebase, чтобы только аутентифицированные пользователи могли получить доступ к облачной базе данных Firestore. В моей консоли Firebase отображается, что в проекте нет пользователя:

консоль 1

Но в приложении я без проблем использую свою учетную запись Google:

введите описание изображения здесь

Как я могу аутентифицировать учетные записи, вошедшие в систему Google, чтобы они могли отображаться в «Пользователи», чтобы я мог изменять правила облачного хранилища Firestore?

Редактировать: это мои правила Firebase:

 rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
        allow read, write: if request.auth != null
    }
  }
}
  

Сразу после входа в систему с помощью Google я получаю Plugin.CloudFirestore.CloudFirestoreException: 'PERMISSION_DENIED: Missing or insufficient permissions.' .

Однако, если я установлю справедливые правила true , я могу без проблем использовать свою учетную запись Google, но, как указано в исключении, она не аутентифицирована (?).

Ответ №1:

Чтобы разрешить доступ к данным в Cloud Firestore только аутентифицированным пользователям, ознакомьтесь с документацией о правилах безопасности для всех аутентифицированных пользователей. Оттуда:

 service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}
  

Это все равно будет работать, даже если вы не видите пользователя в консоли Firebase. Пока у них есть токен Firebase ID, этот токен будет проверяться в этих правилах безопасности.

Комментарии:

1. Я опубликовал это правило, но я не могу прочитать данные. Сразу после входа в систему с помощью Google я получаю исключение Plugin.CloudFirestore.CloudFirestoreException: 'PERMISSION_DENIED: Missing or insufficient permissions.' . Можете ли вы объяснить мне, как добавить или получить упомянутый вами токен Firebase ID?

2. Вход в систему с помощью Google не выполняется автоматически, после чего вы также входите в Firebase. Вам нужно будет использовать учетные данные, которые вы получите при входе в Google, чтобы затем подключиться к Firebase.

3. Вы знаете, как это сделать в Xamarin?

4. Из сканирования нескольких сообщений в блоге ( 1 ) кажется, что это было бы очень похоже на то, как это работает в Android SDK: FirebaseAuth.Instance.SignInWithCredentialAsync Также смотрите: github.com/xamarin/GooglePlayServicesComponents/blob /…