Bonjour,
Mon but recherché est de pouvoir me connecter à FlickR via une méthode PHP qui me renverrait, une fois que l'utilisateur a autorisé l'accès dans FlickR, les tokens nécessaires permettant des connexions ulterieures.
Pour essayer de mettre cela en place, j'ai utilisé la classe FlickR téléchargée sur le lien GitHub suivant : https://github.com/dopiaza/DPZFlickr
A partir de là, je suis parvenu à me connecter à mon compte FlickR en accès privé et à afficher mes albums dans ma page HTML.
Voici comment je suis arrivé à mettre cela en place :
Ceci fonctionne très bien.
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 <?php require_once 'FlickR.php'; $secret_key = "12435616424646"; $api_key = "d55fg15fg15fgh1fg5hfg5h1fgh4fg15h"; $callback = sprintf('%s://%s:%d%s', (@$_SERVER['HTTPS'] == "on") ? 'https' : 'http', $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['SCRIPT_NAME']); $flickr = new Flickr($api_key, $secret_key, $callback); if (!$flickr->authenticate('write')) { die("Hmm, something went wrong...\n"); } $userNsid = $flickr->getOauthData(Flickr::USER_NSID); $userName = $flickr->getOauthData(Flickr::USER_NAME); $userFullName = $flickr->getOauthData(Flickr::USER_FULL_NAME); $parameters = array( 'per_page' => 100, 'extras' => 'url_sq,path_alias', ); $response = $flickr->call('flickr.photosets.getList', $parameters); ?> <!doctype html> <html lang="fr"> <head> <meta charset="utf-8" /> <title>Albums Flickr</title> <meta name="description" content="" /> <meta name="keywords" content="" /> <meta name="robots" content="index, follow" /> </head> <body> <div id="main"> <h1>Albums Flickr</h1> <?php if($response['stat'] == 'ok') { foreach($response['photosets']['photoset'] as $photo) { $id = $photo['id']; // ID de l'album $primary = $photo['primary']; // Photo principale de l'album $secret = $photo['secret']; // Identifiant secret de la photo $server = $photo['server']; // ID du serveur $farm = $photo['farm']; // Numéro du sous domaine $titre = $photo['title']['_content']; // Titre de l'album $nb_photos = $photo['photos']; // Nombre de photos $lien = "photos.php?id=" . $id; // Lien vers les photos $photo_url = "http://farm" . $farm . ".static.flickr.com/" . $server . "/" . $primary . "_" . $secret . "_m.jpg"; // URL de la photo principale ?> <div class="galerie"> <a href="<? echo $lien; ?>" title="<? echo $titre; ?>"><? echo $titre; ?></a> <div class="galerie_image"><a href="<? echo $lien; ?>" title="<? echo $titre; ?>"><img src="<? echo $photo_url; ?>" alt="<?php echo $titre; ?>" title="<?php echo $titre; ?>" /></a></div> <div class="nb_photos"><span class="gris"><? echo $nb_photos; ?> photo<? if($nb_photos > 1) echo "s"; ?></span></div> </div> <?php } } else { echo "Echec de l'appel Flickr !"; } ?> </div> </body> </html>
Ce que je recherche simplement, c'est de pouvoir adapter cela au format PHP Orienté Objet
Voici l'explication en détail :
Une page PHP sur mon site demande les identifiants nécessaires pour demander l'authorisation à FlickR de se connecter :
Une fois les identifiants nécessaires saisis, sur le click du bouton "SignIn / Connexion", j'appele la requête ajax suivante :
Du coté PHP, la méthode "connectWithFlickR" ressemble à cela :
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 jQuery.ajax( { type: "POST", url: "index.php", dataType: "json", data: { 'action': 'connectWithFlickR', 'sAPIKey' : sApiKey, 'sSecretCode' : sSecretCode }, success: function (response) { console.debug(response); } });
Je voudrais alors que l'utilisateur soit redirigé vers la page de FlickR prévu pour autoriser la connexion de l'application à FlickR.
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 public function connectWithFlickR() { require_once FlickR.php'; $sApiKey = $_REQUEST["sAPIKey"]; $sSecretCode = $_REQUEST["sSecretCode"]; $sCallback = sprintf('%s://%s:%d%s', (@$_SERVER['HTTPS'] == "on") ? 'https' : 'http', $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['SCRIPT_NAME']); $oFlickr = new Flickr($sApiKey, $sSecretCode, $sCallback); if (!$oFlickr->authenticate('write')) { die("Hmm, something went wrong...\n"); } }
Et une fois que l'utilisateur a accepté, je souhaiterais revenir sur ma page d'origine avec les tokens générés par FlickR.
Cela me permettrait alors de notifier que l'utilisateur est désormais autorisé à accéder aux contenu Flickr de son compte.
Et de plus, lorsque l'utilisateur voudra consulter ses photos / albums via mon site web, les tokens de connexion étant conservés, il n'aura pas besoin d'autoriser à nouveau la connexion de l'application à FLickR.
L'objectif recherché est donc le suivant :
Lors de l'appel à flickr->authenticate(), je voudrais être dirigé vers la page FlickR pour autoriser la connexion de mon appli à FlickR. Et une fois autorisé, je souhaiterais être redirigé sur ma page d'origine.
Toute aide est la bienvenue,
Merci
Partager