L'autorisation de Google Drive à l'aide de JavaScript
Je suis en train d'autoriser ma candidature pour intégrer avec Google Drive. Google documentation fournit des détails sur les serveur de base de l'autorisation et des exemples de code pour différentes technologies de serveur.
Il y a aussi un JavaScript API Google bibliothèque, qui prend en charge l'autorisation. Dans le des échantillons de l'article de la wiki il y a un extrait de code pour la création d'une config et l'appel de la autoriser la fonction. J'ai modifié le champ d'application de celui-là que je crois est nécessaire pour le lecteur:
var config = {
'client_id': 'my_client_ID',
'scope': 'https://www.googleapis.com/auth/drive.file'
};
gapi.auth.authorize(config, function() {
console.log(gapi.auth);
});
La fonction de callback n'est appelé (oui, l'API Google bibliothèque est chargé corrigé) à la Recherche de la Java de Récupérer et d'Utiliser OAuth 2.0 informations d'Identification d'exemple, le client secret semble être un paramètre, cela doit-il aller dans la config?
Quelqu'un a déjà essayé ce en JS, pour le Lecteur ou d'autres Api Google? Personne ne sait le meilleur itinéraire pour le débogage d'un tel problème, c'est à dire ai-je besoin pour quelques pas à travers la bibliothèque et arrêter whinging?
S'il vous plaît ne pas suggérer de faire l'autorisation du côté du serveur, notre application est entièrement du côté client, je ne veux pas de l'état sur le serveur (et je comprends le jeton d'actualisation des questions ce sera la cause). Je suis familier avec l'API de configuration dans les résultats de Google console et je crois que, et le lecteur SDK de configuration sont corrects.
- Votre github lien est obsolète - pouvez-vous le mettre à jour s'il vous plaît?
- draw.io/js/diagramly/GoogleDrive.js est
Not Found
Vous devez vous connecter pour publier un commentaire.
Il est possible d'utiliser l'Api Google Javascript bibliothèque de client avec le Lecteur, mais vous devez être conscient qu'il ya des points de douleur.
Il y a 2 principaux sujets de l'heure, qui ont tous deux workarrounds:
Autorisation
D'abord si vous avez un oeil de près la façon dont Google Drive auth œuvres, vous vous rendrez compte que, après qu'un utilisateur a installé votre application Lecteur et tente d'ouvrir un fichier ou créer un nouveau fichier avec votre application, Lecteur initie l'autorisation OAuth 2.0 flux automatiquement et l'auth les paramètres sont définis à response_type=code et access_type=hors ligne.
Cela signifie essentiellement que pour l'instant, Lecteur apps sont obligés d'utiliser le protocole OAuth 2 côté serveur de flux qui ne va pas être d'une quelconque utilité pour le client de Javascript bibliothèque (qui n'utilise que le côté client de flux).
Le problème est que: Lecteur lance un côté serveur OAuth 2.0 couler, alors le Javascript de la bibliothèque du client initie une côté client OAuth 2.0 flux.
Cela peut fonctionner, tout ce que vous avez à faire est d'utiliser le code côté serveur pour traiter le code d'autorisation est revenu après que le Disque côté serveur de flux (vous devez l'échanger pour un jeton d'accès et un jeton d'actualisation).
De cette façon, seul le premier flux de l'utilisateur sera invité pour l'autorisation. Après la première fois que vous échangez le code d'autorisation, l'authentification de la page sera contourné automatiquement.
Côté serveur échantillons pour ce faire est disponible dans notre documentation.
Si vous n'avez pas le processus de l'échange/le auth code sur le serveur-côté débit, l'utilisateur sera invité pour l'authentification à chaque fois qu'il essaie d'utiliser votre application de Lecteur.
De la manipulation de contenu de fichier
Le deuxième problème est que le téléchargement et l'accès au Lecteur réel contenu du fichier n'est pas facile de nos client Javascript library. Vous pouvez toujours le faire, mais vous devrez utiliser le code Javascript personnalisé.
La lecture du contenu du fichier
Lorsqu'un fichier de métadonnées/un fichier objet est récupéré, il contient un
downloadUrl
attribut qui pointe vers le fichier de contenu. Il est maintenant possible de télécharger le fichier à l'aide de la SCRO demande et de la façon la plus simple d'auth est d'utiliser le protocole OAuth 2 jeton d'accès à une URL param. Donc juste ajouter&access_token=...
à ladownloadUrl
et aller chercher le fichier à l'aide XHR ou par redirection de l'utilisateur vers l'URL.Téléchargement du fichier contenu
Mise à JOUR mise à JOUR: Le téléchargement des points de terminaison ne désormais en charge de la SCRO.
~~Mise à JOUR: Le téléchargement des points de terminaison, à la différence du reste de la Voiture de l'API ne prennent pas en charge de la SCRO de sorte que vous aurez à utiliser l'astuce ci-dessous pour l'instant:~~
Le téléchargement d'un fichier est délicat car il n'est pas intégré dans le client de Javascript lib et vous ne pouvez pas entièrement le faire avec HTTP, comme décrit dans cette réponse parce que nous n'autorisons pas les requêtes inter-domaine sur ces API points de terminaison. Donc, vous ne devez prendre avantage de l'iframe proxy utilisé par notre code Javascript de la bibliothèque du client et de l'utiliser pour envoyer un construit en plusieurs parties demande au Lecteur de SDK. Grâce à @Alain, nous avons un exemple de la façon de le faire ci-dessous:
Pour améliorer tout cela, dans le futur on pourrait:
/upload/...
points de terminaisonexportLinks
natif gDocsPas de promesses à ce point bien 🙂
Je l'ai fait. Voilà mon code:
Vous n'avez qu'à changer:
à votre clientID et ApiKey de votre API Google Console 🙂
Bien sûr, vous devez créer votre projet sur Google API Console, activer le Lecteur de l'API et d'activer les Comptes Google auth dans le protocole OAuth 2.0 (vraiment eeeeasy!)
PS: il l'habitude de travailler localement sur votre PC, il va travailler sur certains de l'hébergement, et en glissement annuel devez fournir l'url de celui-ci sur le projet de la console 🙂