Autoryzacje Google Apps Script API dla DriveApp.getFileById

0
Chris 2020-10-07 16:06.

Mam projekt Google Cloud Platform (GCP), który uruchamia prawie wszystkie skrypty / funkcje bezpośrednio, ale kilka za pośrednictwem interfejsu API. Wszystko jest dostępne tylko wewnętrznie w domenie G Suite, a typ aplikacji ekranu akceptacji OAuth to „Wewnętrzna”.

Mam skrypt, który nie jest wywoływany przez API, ale bezpośrednio na zegarze co x minut. Wykonuje

DriveApp.getFileByID(pictureID)

To działa świetnie! Bez problemów.

Mam też inny skrypt, w tym samym projekcie GCP, który zamiast uruchamiać się przez licznik czasu, działa poprzez wywołanie przez API. Oto wiersz kodu, który go wywołuje (nie jest to naprawdę ważne):

var result = UrlFetchApp.fetch(url, options);

Skrypt API działa świetnie! Dopóki nie dotrze do następujących wierszy:

      try { var file = DriveApp.getFileById(pictureID); }
      catch (e) {
        Logger.log('e = ' + JSON.stringify(e));
        return;
      }

Wynik dziennika to

e = {"name":"Exception"}

Sprawdziłem, czy pictureID jest taki sam, jak w skrypcie innym niż API, który działa. Robię próbę w tym skrypcie uruchamiającym API, aby upewnić się, że oprogramowanie ma dostęp do pliku, a nie po to, aby uzyskać do niego dostęp.

Jestem prawie pewien, że jest to kwestia autoryzacji. Używam GCP od jakiegoś czasu, mam pewne doświadczenie z autoryzacjami, ale nie za dużo.

Oto kilka szczegółów dotyczących zezwoleń ...

Ze skryptów projektu Project Properties (File / Project Properties) wynika, że ​​wymaga on następujących zakresów protokołu OAuth:

Zgodnie z dokumentacją Google pod adresem https://developers.google.com/apps-script/reference/drive/drive-app#getfilebyidid,

Scripts that use this method require authorization with one or more of the following scopes: 

https://www.googleapis.com/auth/drive.readonly
https://www.googleapis.com/auth/drive

Oto zakresy, które zdefiniowałem teraz na ekranie zgody GCP Oauth:

Jak widać, dodałem drive, drive.readonly i drive.file (co nie wydaje się być potrzebne).

Co więcej, ten konkretny plik obrazu jest przechowywany na Dysku Google właściciela projektu GCP, skryptów i administratora najwyższego poziomu domeny G Suite. Nie zawsze tak będzie, ponieważ użytkownicy będą udostępniać obrazy z własnego Dysku Google właścicielowi tego oprogramowania / GCP. Jednak mam wrażenie, że nawet teraz skrypt wyzwalany przez licznik czasu działałby z plikami udostępnionymi przez użytkownika, ale nie ze skryptem wywoływanym przez API.

Jestem prawie pewien, że jest to problem z uwierzytelnianiem, ale gdzieś mi czegoś brakuje.

Dziękuję za pomoc!

Aktualizacja:

Oto kod ze skryptu, który WYWOŁUJE skrypt API (zmieniony częściowo ze względu na poufność), ponieważ zastanawiam się, czy być może problem nie leży po stronie klienta / wywołującego. Być może nie otrzymuję prawidłowo OAuthToken? Lub token nie ma odpowiednich uprawnień?

  var token = ScriptApp.getOAuthToken();
  
  var header = {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + token,
  };
  
  var parms = [id];
  
  var data = {
    "function": "updateSettings",
    "parameters": parms,
    "devMode": true,
  }
  
  var options = {
    "method":"POST",
    "headers": header,
    "muteHttpExceptions": true,
    "payload": JSON.stringify(data)
  };
  
  // Call the API
  var result = UrlFetchApp.fetch(url, options);

1 answers

0
Chris 2020-10-08 05:27.

Zrozumiałem to po skontaktowaniu się z Google i niestety nie otrzymałem dużej pomocy i kilka godzin prób i badań ...

Brakowało mi dodania „oathScopes” do pliku manifestu / appsscript.json. Bawiłem się potrzebnymi lunetami i skończyło się na dwóch poniższych pokazanych poniżej. Znalazłem rozwiązanie, patrząc na tę odpowiedź: Używanie AuthToken uzyskanego za pośrednictwem ScriptApp.getAuthToken () do wywoływania aplikacji internetowych w GAS .

W edytorze skryptów przejdź do Wyświetl / Pokaż plik manifestu.

Oto jak to wyglądało wcześniej:

{
  "timeZone": "America/New_York",
  "dependencies": {
  },
  "webapp": {
    "access": "MYSELF",
    "executeAs": "USER_DEPLOYING"
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}

a oto jak to wygląda teraz ...

{
  "timeZone": "America/New_York",
  "dependencies": {
  },
  "webapp": {
    "access": "MYSELF",
    "executeAs": "USER_DEPLOYING"
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/drive",
    "https://www.googleapis.com/auth/script.external_request"
    ]
}

Po dodaniu zapisałem appsscript.json. Następnie przeszedłem do mojego wyzwalacza runOnEdit (skryptu wywołującego), usunąłem go i ponownie dodałem. Jednak spowodowało to nieprzyjemnie wyglądający błąd:

Sprawdziłem to i znalazłem ten post: Błąd odbierania podczas tworzenia nowego wyzwalacza w Apps Script . Więc uruchomiłem kod w edytorze skryptów i rzeczywiście przywołał ekran autoryzacji. Zatwierdziłem, ponownie dodałem wyzwalacz i teraz wszystko działa świetnie w wywoływaniu API!

Related questions

MORE COOL STUFF

Jana Duggar: Wszystko, co powiedziała o miłości i jej 5-letnie okno na znalezienie „jednego”

Jana Duggar: Wszystko, co powiedziała o miłości i jej 5-letnie okno na znalezienie „jednego”

Jana Duggar otwarcie mówiła o swoich poszukiwaniach miłości. Oto wszystko, co powiedziała na ten temat i jej pięcioletnie okno na małżeństwo.

Sam Heughan dokładnie wie, co weźmie z zestawu „Outlander” - „Czuję się, jakbym był Jamiem, kiedy je zakładam”

Sam Heughan dokładnie wie, co weźmie z zestawu „Outlander” - „Czuję się, jakbym był Jamiem, kiedy je zakładam”

Gwiazda „Outlandera”, Sam Heughan, niedawno ujawnił, co zabierze z planu, aby upamiętnić Jamiego Frasera, rolę, która uczyniła go gwiazdą.

Piosenka wczesnych Beatlesów, która była jednym z „najbardziej ekscytujących występów” zespołu, według Insidera Fab Four

Piosenka wczesnych Beatlesów, która była jednym z „najbardziej ekscytujących występów” zespołu, według Insidera Fab Four

„She Loves You” została napisana w godzinę, nagrana w jeden dzień i była piosenką The Beatles z jednym z ich najlepszych wykonań w karierze.

Dolly Parton pomogła swojej „inwalidzkiej” babci, gdy żadne inne wnuki by tego nie zrobiły - ona też zrobiła jej psikusa

Dolly Parton pomogła swojej „inwalidzkiej” babci, gdy żadne inne wnuki by tego nie zrobiły - ona też zrobiła jej psikusa

Dolly Parton i jej babcia Bessie miały szczególny związek. Babcia Parton była bardzo chora, ale to nie powstrzymało Dolly przed zrobieniem jej psikusa.

Jakie jest najtwardsze drewno na świecie?

Jakie jest najtwardsze drewno na świecie?

Można by pomyśleć, że dąb lub hikora są wytrzymałe, ale jeśli chodzi o najtwardsze drewno na świecie, to nawet się do nich nie zbliżają.

10 najstraszniejszych stworzeń morskich kryjących się w głębinach oceanu

10 najstraszniejszych stworzeń morskich kryjących się w głębinach oceanu

Ocean jest pełen piękna, ale kryje też jedne z najstraszniejszych stworzeń morskich na świecie. Wiele z nich czai się głęboko pod powierzchnią oceanu, w mrocznym, podciśnieniowym świecie głębin morskich.

10 najlepszych zaklęć miecza w grze Minecraft

10 najlepszych zaklęć miecza w grze Minecraft

Jeśli walczysz z wrogimi mobami lub przygotowujesz się do scenariuszy PvP, znajomość najlepszych zaklęć miecza w Minecrafcie może dać ci znaczną przewagę. Zaklinanie mieczy pozwala zadawać większe obrażenia, zwiększać liczbę przedmiotów wypadających z potworów i wydłużać trwałość miecza.

13 krajów socjalistycznych, które wyglądają zupełnie inaczej

13 krajów socjalistycznych, które wyglądają zupełnie inaczej

Kiedy ludzie mówią o krajach socjalistycznych, często wyobrażają sobie pełną kontrolę rządu i brak własności prywatnej. Jednak w praktyce gospodarki socjalistyczne są bardzo zróżnicowane.

Podsumowanie Niedźwiedzia: Czy Marcus jest najmilszym, najłagodniejszym i najszczerszym mężczyzną w Chicago?

Podsumowanie Niedźwiedzia: Czy Marcus jest najmilszym, najłagodniejszym i najszczerszym mężczyzną w Chicago?

W „Children” pojawia się epizod ze znanym nazwiskiem i kilka druzgocących wiadomości

Czy za 9800 dolarów „zapakowałbyś ich” do tej siedmiomiejscowej Toyoty RAV4 z 2008 roku?

Czy za 9800 dolarów „zapakowałbyś ich” do tej siedmiomiejscowej Toyoty RAV4 z 2008 roku?

Uważa się, że ten RAV4 jest w doskonałym stanie i jest przygotowany do gry w muzyczne krzesła.

Furgonetka dostawcza Amazon zapala się w wyniku ognistej eksplozji podczas letnich upałów w Houston

Furgonetka dostawcza Amazon zapala się w wyniku ognistej eksplozji podczas letnich upałów w Houston

Na nagraniu z drona uchwycono strażaków, którzy najwyraźniej walczyli o ugaszenie pożaru.

Marvel's Black Panther Show będzie najważniejszym serialem animowanym w historii

Marvel's Black Panther Show będzie najważniejszym serialem animowanym w historii

Eyes of Wakanda jest bezpośrednio powiązany z MCU, a także aktualizacje X-Men '97, What If..., Daredevil i nie tylko.

Aktorzy serialu Laguna Beach: Gdzie są teraz?

Aktorzy serialu Laguna Beach: Gdzie są teraz?

„Laguna Beach” opowiadało o życiu licealistów Lauren Conrad, Kristin Cavallari, Stephena Collettiego i innych w połowie lat 2000. Oto, gdzie obecnie znajdują się członkowie obsady reality show MTV.

Historia randek Avy Gardner: spojrzenie wstecz na małżeństwa i romanse ikony Hollywood

Historia randek Avy Gardner: spojrzenie wstecz na małżeństwa i romanse ikony Hollywood

Ava Gardner była żoną Mickeya Rooneya i Franka Sintry, a także spotykała się z kilkoma innymi gwiazdami Hollywood. Oto spojrzenie wstecz na historię randek Avy Gardner.

Kim jest żona Johna Cleese'a? Wszystko o Jennifer Wade

Kim jest żona Johna Cleese'a? Wszystko o Jennifer Wade

John Cleese poślubił swoją żonę Jennifer Wade w 2012 roku. Oto wszystko, co warto wiedzieć o żonie Johna Cleese'a, Jennifer Wade.

Posiadłość Kim Zolciak-Biermann i Kroy Biermann List w Gruzji na sprzedaż w Splicie

Posiadłość Kim Zolciak-Biermann i Kroy Biermann List w Gruzji na sprzedaż w Splicie

Gwiazda „Prawdziwych gospodyń domowych z Atlanty” i jej były mąż, zawodowy zawodnik NFL, po raz pierwszy kupili rozległą rezydencję Alpharetta w 2012 roku.

zaimki są bardzo przerażające

Uderzyło mnie to nagle, jak to często bywa. Znowu jest w połowie <Nie, nie ten w Pacyfiku, bordowy, ten na karnawale> Każdy nagłówek jest głośny…..

3 sprawdzone sposoby na poprawę umiejętności pisania

Korzyści płynące z pisania i strategie, które Ci w tym pomogą

3 sprawdzone sposoby na poprawę umiejętności pisania

W 2022 roku, wraz z wydaniem GPT-3, umiejętność pisania wydaje się tracić na znaczeniu. Dzięki sztucznej inteligencji osoby o słabym pisaniu mogą również generować wysokiej jakości personel.

Powolna erozja: ujawnianie sposobów, w jakie ludzie marnują swoje kariery

Powolna erozja: ujawnianie sposobów, w jakie ludzie marnują swoje kariery

W dzisiejszym dynamicznym i konkurencyjnym świecie kariera odgrywa znaczącą rolę w rozwoju osobistym, stabilności finansowej i ogólnej satysfakcji z życia. Jednak wiele osób wpada w nieustający cykl stagnacji i niezadowolenia, stopniowo marnując swoje życie zawodowe.

Co wpływa na podcast?

Co wpływa na podcast?

W zeszłym tygodniu zauważyłem komunikat prasowy, wysłany za pośrednictwem PressGazette (brytyjski serwis informacyjny). W artykule ogłoszono, że Acast, skandynawska firma hostingowa i reklamowa podcastów, będzie przewodzić konsorcjum „prawdopodobnie najbardziej wpływowych” wydawców podcastów.

Language