1 pièce(s) jointe(s)
Se connecter à FlickR via PHP en POO
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:
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 :
Pièce jointe 224393
Une fois les identifiants nécessaires saisis, sur le click du bouton "SignIn / Connexion", j'appele la requête ajax suivante :
Code:
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:
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