#firebase #xamarin #firebase-authentication #google-signin
#firebase #xamarin #firebase-аутентификация #google-вход
Вопрос:
Я разрабатываю Xamarin.Приложение Forms.
Я успешно реализовал вход в Google благодаря плагину NuGet .GoogleClient.
Проблема в том, что я хочу изменить правила проекта Firebase, чтобы только аутентифицированные пользователи могли получить доступ к облачной базе данных Firestore. В моей консоли Firebase отображается, что в проекте нет пользователя:
Но в приложении я без проблем использую свою учетную запись 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 /…