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 :
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>
Ceci fonctionne très bien.

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 :
Nom : 2016-11-08 19_37_49-My Media Manager.png
Affichages : 203
Taille : 10,3 Ko

Une fois les identifiants nécessaires saisis, sur le click du bouton "SignIn / Connexion", j'appele la requête ajax suivante :
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);
            }
        });
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
 
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");
        }
    }
Je voudrais alors que l'utilisateur soit redirigé vers la page de FlickR prévu pour autoriser la connexion de l'application à FlickR.
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