IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP et API Dropbox


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut PHP et API Dropbox
    Bonjour à tous,

    Après avoir pris le temps de chercher sur le forum, je me décide à poster mon problème (désolé si je ne suis pas dans la bonne section).

    Je développe un système de gestion pour un petit club d'escalade. Je souhaite mettre en place un système de partage de documents (comme Dropbox) mais via mon système, pour rendre le tout plus simple d'utilisation.
    Pour le fonctionnement prévu, il est simple :
    1. L'utilisateur se connecte à mon outil avec ses identifiants
    2. L'utilisateur a accès (selon ses droits) à X éléments de menu (exemple : Compta, Calendrier, Club, Secrétariat, ...)
    3. L'utilisateur choisit, par exemple, le menu "Compta" (à noter : dans le Dropbox existe déja un dossier "Compta")
    4. L'utilisateur a une liste avec le nom des fichiers dans le dossier "Compta", il en sélectionne un et cliques sur "Télécharger"
    5. Pour uploader il cliques sur "Uploader", sélectionne un fichier et celui ci doit être uploadé dans le dossier "Compta" Dropbox

    Et même chose pour les autres menus à vrai dire. Rien de plus compliqué en soit.

    Là ou je ne m'en sors pas c'est de mettre en place l'API Dropbox. Je suis parti sur la partie développeur du site, ai téléchargé le Core API Dropbox, ai mis sur le serveur les fichiers. Là où je bloque c'est pour la connexion à Dropbox, apparement il utilise "OAuth" ou "PEAR" et je n'y connais rien la dessus. J'ai pourtant bien lu la doc mais rien n'y fait.

    Ce que je fais pour le moment (et qui ne marche pas du tout), c'est cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    require_once "./Dropbox/autoload.php";
    use \Dropbox as dbx;
     
    $appInfo = dbx\AppInfo::loadFromJsonFile("./Dropbox/login.json");
    $webAuth = new dbx\WebAuthBase($appInfo, "PHP-Example/1.0");
     
    $authorizeUrl = $webAuth->start(); //<-- Si je mets cette ligne le site bloque et le reste du code est ignoré
    Si quelqu'un a déjà travaillé avec ça, ou peut me donner des pistes de recherche, ce serait sympa.
    Pour info, je suis sur un serveur mutualisé OVH (peut être une extension non activée ? ou autre ...)
    Aussi, je n'utilise pas l'hébergement Web (qui serait beaucoup plus simple à utiliser) car le club possède déjà un abonnement Dropbox et souhaite le mettre à profit.

    Merci d'avance !

  2. #2
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 46
    Par défaut
    Ayant eu récemment à faire un truc du même genre, je te conseille de te pencher sur ce que Dropbox appelle les Drop-ins.
    C'est relativement simple à utiliser et grâce à ça, on peut choisir un fichier d'un compte utilisateur Dropbox pour l'upload sur un serveur et inversement.

    (Petite subtilité toutefois : utiliser cURL pour ça et profiter de son potentiel à se dire "HTTPS? ok, je prends ")

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut
    Ah intéressant ! Je l'avais vu, mais j'avais pas tilté sur le "Javascript", j'avais juste vu "iOs" et "Android", autant pour moi !
    Je regarde à ce niveau là, et je reviendrais mettre le post en résolu si j'ai trouvé mon bonheur. Merci beaucoup.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut
    Alors, je n'y arrive pas même avec le Chooser (décidément !)

    Je pense que c'est plus une erreur de code qu'autre chose. Pourtant j'ai bien suivi la documentation.

    Ce que je fais :

    1. J'importe la librairie JS de Dropbox (avec ma clé secrète)
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <script type="text/javascript" src="https://www.dropbox.com/static/api/2/dropins.js" id="dropboxjs" data-app-key="CLE_SECRETE"></script>
    2. J'initialise le Chooser
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      <script type="text/javascript">
              var button = Dropbox.createChooseButton(options);
              options = {
                  success: function(files) {
                      alert("Lien: " + files[0].link)
                  },
                  linkType: "direct",
                  multiselect: true
              };
              document.getElementById("dp-chooser").appendChild(button);
          </script>
    3. Je l'utilise dans mon code
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <input type="dropbox-chooser" id="dp-chooser" name="selected-file" />


    Mais malgré ça, j'ai seulement un champ de texte simple (j'essaie d'avoir le petit bouton de Dropbox)

    Merci d'avance pour l'aide !

    P.S : Double post, désolé.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 46
    Par défaut
    Il me semble que le "petit bouton dropbox" sur le "Chooser" n'est pas faisable via le "Chooser", justement. Tu peux te débrouiller via CSS si tu tiens vraiment à avoir ce design.
    Par contre, pour le "Saver", le design est prévu pour transformer ton lien en "bouton dropbox" (avec même un icône de statut de l'envoi du fichier )

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut
    Quel type dois-je choisir dans ce cas ?
    ( leur doc est vraiment pas terrible ... )

  7. #7
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 46
    Par défaut
    Le Chooser te permet de récupérer un fichier depuis un compte Dropbox, tandis que le Saver te permet de charger un fichier local vers un compte Dropbox.
    Dans le cas de ton premier post, le Chooser correspond au point n°4 et le Saver au point n°5.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut
    Point n°4 ? n°5 ? Où donc ?

  9. #9
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 46
    Par défaut
    Citation Envoyé par BlackAlpha Voir le message
    - L'utilisateur a une liste avec le nom des fichiers dans le dossier "Compta", il en sélectionne un et cliques sur "Télécharger"
    --> Le Chooser
    Citation Envoyé par BlackAlpha Voir le message
    - Pour uploader il cliques sur "Uploader", sélectionne un fichier et celui ci doit être uploadé dans le dossier "Compta" Dropbox
    --> Le Saver

    Désolé si ce n'était pas clair ^^

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut
    Ah ! Autant pour moi, oui
    J'avais bien compris le fonctionnement du chooser et du saver.

    Mais c'est pour le code ... tu aurais un exemple d'intégration ?

  11. #11
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 46
    Par défaut
    Tu peux t'inspirer de ce que j'ai fait (c'est moche, pas optimisé, encore en mode découverte et je suis sûr que d'autres vont passer et améliorer tout ça), mais ça montre le fonctionnement de base des Chooser/Saver

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <!DOCTYPE html>
    <html lang="fr-FR">
    	<head>
    	<meta charset="UTF-8">
    	<script type="text/javascript" src="https://www.dropbox.com/static/api/2/dropins.js" id="dropboxjs" data-app-key="APP-KEY"></script>
    	<script>
    		options = {
        			success: function(files) {
         	   			var url = location.href;
     
    					//Récupération du token (et du reste, à améliorer)
    					var code = url.substring(42);
     
    					//Modification du lien pour récupérer un fichier depuis le compte Dropbox de l'utilisateur
         	   			document.getElementById('dl').setAttribute('href', "index.php?file="+files[0].link+"&file_name="+files[0].name+"&"+code);
         	   			document.getElementById('dl').innerHTML = files[0].name;
     
         	   			//Pour montrer le fonctionnement du saver
         	   			document.getElementById('saver').setAttribute('href', files[0].link);
        			},
     
        			cancel: function() {
        			},
     
        			linkType: "direct"
     
        			multiselect: false
     
        			extensions: ['.pdf', '.doc', '.odt'],
    		};
    	</script>
    	</head>
    	<body>
    		<?php
    		//Lien pour obtenir le token nécessaire à l'accès au compte Dropbox de l'utilisateur
    		$app_code = "APP-KEY";
    		$url_redirect = "http://url/redirection.php";
    		echo "<a href=\"https://www.dropbox.com/1/oauth2/authorize?client_id=$app_code&response_type=token&redirect_uri=$url_redirect\">Test</a>";
     
    		?>		
     
    		<h3>Test API DropBox</h3>		
     
    		<button onclick="Dropbox.choose(options)">Ouvrir un fichier Dropbox</button>
    		<a id="dl" href=""></a>
     
    		<br />
    		<?php
    		if(isset($_GET['file_name'])){
    			$ch = curl_init(str_replace(" ","%20",$_GET['file']));
    			$fp = fopen(dirname(__FILE__) . "/Files/" . $_GET['file_name'], 'w+');
    			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    			curl_setopt($ch, CURLOPT_FILE, $fp);
     
    			//Désactivation des vérifications
    			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     
    			$response = curl_exec($ch);
    			if($response == true){
    				echo 'file downloaded';
    			}
    			else echo 'un problème est survenu';
    			curl_close($ch);
    		}
    		?>
    		<br />
    		<br />
     
    		<!-- Pour utiliser le saver Dropbox, il suffit de donner la classe "dropbox-saver" à un lien.
    			Le fichier fourni dans l'attribut href sera uploadé sur le compte Dropbox de l'utilisateur -->
    		<a id="saver" href="http://www.corsaire-editions.com/pub/fond-ecran-chaton.jpg" class="dropbox-saver">Save to dropbox</a>
    		<br />
     
     
    	</body>
    </html>

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut
    En suivant exactement ton code, le chooser ne fonctionne toujours pas, si je clique sur le lien pour avoir le token, il me renvoie vers Dropbox qui me dit : "This app is not allowed to use OAuth." - ce qui est normal je pense puisque c'est une application Drop-In (?).
    Mais le saver par contre fonctionne nickel ... étrange !

  13. #13
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 46
    Par défaut
    Alors c'est vrai que j'ai oublié un truc du coup... désolé.
    Avec le code que j'ai donné, il faut cliquer sur le lien "Test" pour obtenir un token de Dropbox qui autorise ton application (il faut que l'URL de redirection soit ajouté dans les paramètres de ton application sur le site de Dropbox).

    Et encore désolé de pas être forcément très clair. Je n'ai pas pu passer beaucoup de temps là-dessus et je ne pourrais pas t'aider beaucoup plus.
    Farfouille sur la doc de Dropbox, je pense que tu auras des solutions pour d'éventuels bloquages

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut
    Je n'avais pas vu ta réponsé, désolé !
    Bon et bien j'essaierais de trouver chaussure a mon pied, merci a toi en tout cas

Discussions similaires

  1. API DropBox et Eclipse
    Par gridsof dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 05/12/2011, 16h29
  2. PHP et API Google Maps V3
    Par chuckichucki dans le forum Langage
    Réponses: 17
    Dernier message: 11/05/2011, 18h06
  3. [Web Service] PHP YouTube API
    Par jaccaddi dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/04/2008, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo