2012-04-27 3 views
12

Je travaille sur une interface Google Drive pour Emacs. Le concept est qu'Emacs pourrait fournir un moyen indépendant de la plate-forme pour charger, modifier et enregistrer des documents texte stockés dans Google Drive. J'ai enregistré mon application et je peux m'authentifier avec OAuth2 et obtenir une liste de fichiers avec l'API Docs List, mais lorsque j'essaie d'exécuter une insertion avec l'API Google Drive, je vois une erreur:Pourquoi l'erreur "L'utilisateur authentifié n'a pas installé l'application avec l'ID du client" s'affiche-t-elle lorsque vous utilisez l'API Google Drive en mode natif?

"L'utilisateur authentifié a En outre, il semble que je doive publier mon application Emacs dans le Chrome Web Store pour avoir accès à l'API Drive. Cela n'a pas de sens pour moi ... J'ai remarqué qu'il y a un projet FUSE en développement pour Google Drive, ce qui suggère que le développement natif est possible. Lorsque j'ai écrémé le code, cependant, je n'ai pas vu un composant Chrome Web Store pour le faire fonctionner. Est-ce que j'essaie d'abuser de l'API ou y a-t-il un moyen de rendre ce travail plus logique?

Répondre

9

EDIT:

Selon Ali Afshar, de l'équipe Google Drive, l'installation n'est plus nécessaire d'utiliser cette API. Ainsi, ce qui suit peut ne plus être pertinent, mais sera laissé à des fins historiques.


Alors, tout d'abord l'API ne prend pas en charge le développement d'applications dans le sens que nous faisons à la fois, je ne voudrais pas utiliser le mot natif bien. Les bonnes nouvelles sont que j'ai fait quelques recherches et Google Drive est vraiment juste une rebranding de Google Docs. L'API Google Docs pourrait donc être un bon choix pour les mêmes raisons.

De toute façon, voici les étapes pour résoudre l'erreur: "L'utilisateur authentifié n'a pas installé l'application avec l'ID client ..." Ce qui est une erreur 403, pour le bien de cette réponse. Ces étapes supposent que vous avez configuré une application dans le magasin Web Chrome comme requis et l'avez installée. Je travaille aussi sur ma machine locale, avec mon projet: http://github.com/tom-dignan/gdrive-cli dont j'ai passé cette erreur, donc je pense que vous devriez continuer à brancher votre version d'emacs, parce que je pense que nous pouvons faire fonctionner ça.

a. Ouvrez le Google APIs console.

b. Confirmez que vous avez déjà activé les API sous "API Access" à la fois l'API et SDK pour Google Drive devrait être activé. Là vous obtenez vos secrets de client/clefs d'api et tels. Je suis presque certain que vous avez déjà fait cela, alors allez-y C. (c'est ici pour d'autres qui l'ont manqué)

c. Dans la barre de navigation de gauche, sous "Drive SDK", vous devrez effectuer les opérations suivantes:

  1. Ajouter une "URL de support" (obligatoire)

  2. Ajouter au moins une petite icône de l'application 16x16 (obligatoire)

  3. Ajouter "OAuth ID client (requis)" sous l'intégration d'entraînement (je viens de bricoler et cela semble être le domaine clé.)

  4. Ajouter « Ouvrir une URL (requi rouge) URL à ouvrir pour votre application à partir de l'interface utilisateur de Google Drive."

  5. Cocher "Multiple Support du fichier"

  6. Ajouter certains types MIME et les extensions de fichiers, "text/plain", et txt par exemple

  7. Ajouter les les champs auth:

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

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

Ne vous embêtez pas à essayer d'ajouter les étendues auth pour Google Docs ici, car cela ne fonctionnera pas. Google ne souhaite pas que nous l'utilisions de cette manière, car les fichiers qui génèrent des applications doivent être privés pour cette application. L'intégration avec Google Docs devra être séparée. Maintenant je sais que vous devez penser "pourquoi dois-je ajouter certains d'entre eux ..." C'est parce que la forme les fait champs obligatoires. Dans le mien, j'ai mis quelques URL qui pointent vers des pages HTML statiques.

Une fois que vous avez fait ce qui précède, nettoyez votre état et réinstallez votre application Chrome. Ensuite, essayez à nouveau votre code, et il devrait cesser de vous donner un 403.

+0

Merci beaucoup pour cette réponse. Je vais essayer ce truc ce soir pour voir si ça m'amène au très convoité "404" dont tu parles. =) Une question, cependant. Ai-je bien compris, que si je distribue mon application (probablement via GitHub), quiconque voudra l'utiliser devra: (1) installer Chrome ou Chromium et (2) visiter le Chrome Web Store et installer une application web par ailleurs inutile afin qu'ils puissent utiliser le mode Emacs que j'écris? –

+0

Oui, ça sonne à peu près juste. Il devrait être plus utile pour les développeurs qui travaillent sur leurs propres applications de magasin de chrome. Ensuite, ils peuvent utiliser nos trucs avec leurs informations d'identification pour obtenir et mettre des fichiers pour le débogage, etc. –

+0

OK ... Je n'aime pas la réponse, mais merci d'avoir pris le temps de l'expliquer. Je vais aller de l'avant avec ça ... –

Questions connexes