2012-04-27 13 views
12

Ich arbeite an einer Google Drive-Schnittstelle für Emacs. Das Konzept sieht vor, dass Emacs eine plattformunabhängige Möglichkeit bietet, in Google Drive gespeicherte Textdokumente zu laden, zu ändern und zu speichern. Ich habe meine App registriert und kann mich mit OAuth2 authentifizieren und eine Dateiliste mit der Docs List-API abrufen. Wenn ich jedoch eine Insert-Datei mit der Google Drive-API ausführen möchte, wird ein Fehler angezeigt:Warum erhalte ich den Fehler "Der authentifizierte Benutzer hat die App mit der Client-ID nicht installiert", wenn die Google Drive API nativ verwendet wird?

"Der authentifizierte Benutzer hat nicht installiert die App mit Client-ID ... "

Lesen Sie weiter, es scheint, dass ich meine Emacs-Anwendung im Chrome Web Store veröffentlichen muss, um Zugriff auf die Drive API zu erhalten. Für mich ergibt das keinen Sinn ... Ich habe festgestellt, dass ein FUSE-Projekt für Google Drive in der Entwicklung ist, was nahelegt, dass eine native Entwicklung möglich ist. Als ich den Code überflogen habe, habe ich jedoch keine Komponente im Chrome Web Store gesehen, die es funktioniert hat.

Versuche ich, die API zu missbrauchen, oder gibt es einen Weg, diese Arbeit sinnvoller zu machen?

Antwort

9

EDIT:

Laut Ali Afshar, der Google Drive-Team wird die Installation nicht mehr erforderlich, diese API zu verwenden. Was nun folgt, ist vielleicht nicht mehr relevant, wird aber für historische Zwecke belassen.


Also, zunächst einmal die API nicht die Anwendungsentwicklung im Sinne unterstützt, dass wir beide tun es sind, würde ich aber das Wort nicht heimisch. Die gute Nachricht ist, dass ich etwas recherchiert habe und Google Drive wirklich nur ein Rebranding von Google Docs ist. Daher könnte die Google Docs API auch für die gleichen Zwecke eine gute Wahl sein.

Wie auch immer, hier ist die Schritte, um den Fehler zu beheben: "Der authentifizierte Benutzer hat die App nicht mit Client-ID installiert ..." Was ist ein 403 Fehler, für diese Antwort. Bei diesen Schritten wird davon ausgegangen, dass Sie eine App im Chrome Web Store wie erforderlich eingerichtet und installiert haben. Ich arbeite auch an meinem lokalen Rechner, mit meinem Projekt: http://github.com/tom-dignan/gdrive-cli was ich über diesen Fehler hinausbekommen habe, also denke ich, dass du deine Emacs-Version immer wieder wegstecken solltest, weil ich denke, dass wir das schaffen können.

a. Öffnen Sie die Google APIs console.

b. Bestätigen Sie, dass Sie die API bereits unter "API-Zugriff" aktiviert haben. Sowohl das API als auch das SDK für Google Drive sollten aktiviert sein. Dort bekommen Sie Ihre Client-Geheimnisse/API-Schlüssel und so. Ich bin fast sicher, dass Sie das schon getan haben, also gehen Sie weiter zu C. (dies ist hier für andere, die es vielleicht verpasst haben)

c. In der linken Navigationsleiste unter „Antrieb SDK“ Sie müssen folgend tun:

  1. hinzufügen „Support URL“ (erforderlich)

  2. hinzufügen zumindest ein kleines 16x16 Anwendungssymbol (erforderlich)

  3. "OAuth-Client-ID (Erforderlich)" unter Antrieb Integration hinzufügen (ich war gerade bastelt und dies scheint das Schlüsselfeld zu sein.)

  4. hinzufügen „Open URL (Requi rot) URL zum Öffnen für Ihre App über die Google Drive-Benutzeroberfläche."

  5. abhaken "Multiple File Support"

  6. einige MIME-Typen und Dateierweiterungen hinzufügen, "text/plain", und txt zum Beispiel

  7. Fügen Sie die die Auth Bereiche:

    https://www.googleapis.com/auth/userinfo.email

    https://www.googleapis.com/auth/userinfo.profile

Versuchen Sie nicht, die Authentifizierungsbereiche für Google Text & Tabellen hier hinzuzufügen, da dies nicht funktioniert. Google möchte nicht, dass wir es so verwenden, weil Dateien, die Apps erstellen, für diese App privat sein sollen. Die Integration mit Google Text & Tabellen muss separat erfolgen.

Jetzt weiß ich, dass Sie denken müssen "warum muss ich einige von diesen hinzufügen ..." Es ist, weil die Form sie erforderliche Felder bildet. In meiner stelle ich einige URLs, die auf statische HTML-Seiten verweisen.

Sobald Sie die oben genannten Schritte ausgeführt haben, bereinigen Sie Ihren Status und installieren Sie Ihre Chrome-App neu. Dann versuchen Sie Ihren Code erneut, und es sollte aufhören, Ihnen eine 403 zu geben.

+0

Vielen Dank für diese Antwort. Ich werde dieses Zeug heute Nacht ausprobieren, um zu sehen, ob es mich zu dem begehrten "404" bringt, von dem du sprichst. =) Eine Frage jedoch. Verstehe ich richtig, dass, wenn ich meine App (wahrscheinlich über GitHub) vertreibe, jeder, der es benutzen will: (1) Chrome oder Chromium installieren und (2) den Chrome Web Store besuchen und eine ansonsten sinnlose Web App installieren muss damit sie den Emacs-Modus verwenden können, den ich schreibe? –

+0

Ja, klingt ungefähr richtig. Es sollte für Entwickler am nützlichsten sein, die an ihren eigenen Chrome-Store-Apps arbeiten. Dann können sie unser Zeug mit ihren Anmeldeinformationen verwenden, um Dateien zum Debuggen usw. zu bekommen und abzulegen. –

+0

OK ... Ich mag die Antwort nicht, aber danke, dass du dir die Zeit genommen hast, es zu erklären. Ich werde mit diesem ... –