Ошибка Firestore. В запросе недостаточно областей аутентификации.C#

Место общения программистов C#
Ответить
Anonymous
 Ошибка Firestore. В запросе недостаточно областей аутентификации.

Сообщение Anonymous »

Я впервые пытаюсь использовать Google Firestore, выполняя аутентификацию с помощью аутентификации Google API. Первое, что я делаю, это заполняю базу данных с помощью StartBatch с несколькими методами Set. Когда я жду пакетную задачу, она выдает мне следующую ошибку:

Код: Выделить всё

Error: Status(StatusCode=PermissionDenied, Detail="Request had insufficient authentication scopes.") ;
Я мало что нашел об аутентификации в Google для подключения к Firestore. Сначала я аутентифицируюсь с помощью этого метода, используя секрет, предоставленный консолью Google для моего приложения:

Код: Выделить всё

    public async Task GetUserCredentialAsync(string user = null, GoogleOAuthState oAuthState = null)
{
using (ClientSecretStream)
{
string credPath = System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal);

if (oAuthState == null)
{
try
{
var credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(ClientSecretStream).Secrets,
_Scopes,
string.IsNullOrEmpty(user) ? "user" : user,
CTS.Token,
new FileDataStore(credPath, true));

return new GoogleOAuthState(credential, _AppName);
}
catch (Exception e)
{
SetErrorMessage(e, "Error al intentar identificarse en google");
return null;
}
}
else
{
try
{
await GoogleWebAuthorizationBroker.ReauthorizeAsync(
oAuthState.Credential,
CTS.Token);
return oAuthState;
}
catch (Exception e)
{
SetErrorMessage(e, "Error al intentar volver a identificarse en google");
return null;
}
}
}
}
Используя те же области, которые настроены в моей консоли Google для приложения (я использую диск Google в том же приложении):

Код: Выделить всё

            SheetsService.Scope.Spreadsheets
DriveService.Scope.DriveFile
DriveService.Scope.Drive
DriveService.Scope.DriveAppdata
DriveService.Scope.DriveMetadata
"https://www.googleapis.com/auth/datastore"
"https://www.googleapis.com/auth/cloud-platform"

Код: Выделить всё

GoogleOAuthState
— это просто объект для хранения и передачи учетных данных, а что нет.
После этого я подключаюсь к Firestore с помощью этого:

Код: Выделить всё

    public async Task ConnectDB(GoogleLogin.GoogleOAuthState oAuthState)
{
var channelCredentials = oAuthState.Credential.ToChannelCredentials();
var channel = new Channel(FirestoreClient.DefaultEndpoint.ToString(), channelCredentials);
var client = FirestoreClient.Create(channel);
_DB = FirestoreDb.Create(Properties.Settings.Default.FirebaseProjectName, client);
}
Я видел этот метод в этом вопросе и подумал, что он будет наиболее надежным.

Тем временем я установил такие правила пожарной безопасности:

Код: Выделить всё

service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
Аутентификация Google работает нормально, я могу без проблем пользоваться Google Диском. Я также добавил Google в качестве метода аутентификации в консоли Firestore и добавил идентификатор приложения (я не уверен, действительно ли это необходимо).

Мне кажется, я что-то не понимаю... Возможно ли вообще это сделать? Или мне нужно использовать сервисную учетную запись?

Подробнее здесь: https://stackoverflow.com/questions/575 ... ion-scopes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»