Правила доступа к Google Firestore для клиента Google Oauth2 - PullRequest
0 голосов
/ 09 июля 2019

У меня есть веб-приложение, используемое для ввода данных из браузера и сохранения их в Google Firestore, что хорошо работает.

Из листов Google я разработал скрипт для доступа к этим данным и заполнения листа Google.

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

Он отлично работает с моим веб-приложением, но я не могу настроить разрешение на чтение и запись для моего скрипта приложения Google.

Не удалось найти рабочий пример настройки правил доступа для клиента скрипта приложения Google.

Вот как я могу восстановить токен:

function getFirebaseService() {
 return OAuth2.createService('Firebase')
  // Set the endpoint URL.
  .setTokenUrl('https://accounts.google.com/o/oauth2/token')

  // Set the private key and issuer.
  .setPrivateKey(PRIVATE_KEY)
  .setIssuer(CLIENT_EMAIL)

  // Set the property store where authorized tokens should be persisted.
  .setPropertyStore(PropertiesService.getScriptProperties())

  // Set the scopes.
  .setScope('https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/firebase.database https://www.googleapis.com/auth/datastore');

}

и как мне восстановить данные:

var token = getFirebaseService().getAccessToken();
var url = "https://firestore.googleapis.com/v1/projects/[MY-PROJECT-NAME]/databases/(default)/documents/[MY-COLLECTION]";
var options = {
"Authorization" : "Bearer "+token
}
var resp = UrlFetchApp.fetch(url, options);
var data = JSON.parse(resp.getContentText());

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

У меня есть эта ошибка Время восстановления https://firestore.googleapis.com/v1/projects/[MY-PROJECT-NAME]/databases/(default)/documents/[MY-COLLECTION]. Код обновления: 403. Réponse tronquée du serveur: {"error": {"code": 403, "message": "Отсутствует или недостаточно разрешений.", "Status": " PERMISSION_DENIED "}} (Utilisez l'option muteHttpExceptions for examiner la réponse entière.)

...