Flickr API - phpFlickr - 使用photosets_getPhotos()显示私人照片

时间:2013-09-03 09:04:19

标签: php oauth token flickr phpflickr

我想在页面上显示Flickr私人照片。

我的目录中有3个文件:

  • phpFlickr.php(该课程)
  • start.php(auth脚本)
  • flickr.php(显示图片)

以下是start.php的内容:

<?php
session_start();
require_once('phpFlickr.php');
$flickr = new phpFlickr('myapikey','myapisecret', true);
if(empty($_GET['frob'])) {
    $flickr->auth('read');
}
else {
    $flickr->auth_getToken($_GET['frob']);
    header('Location: flickr.php');
    exit();
}
?>

以下是flickr.php的内容:

<?
require_once('phpFlickr.php');
$flickr = new phpFlickr('myapikey','myapisecret', true);
$f->enableCache("fs", "cache");
$photos = $f->photosets_getPhotos('myPhotoAlbumIdWithPrivatePicturesInIt', 5);
foreach ($photos['photoset']['photo'] as $photo): ?>
<img src="<?= $f->buildPhotoURL($photo, 'square') ?>" /><br />
<? endforeach; ?>

这是我收到的错误消息:

“Flickr API返回以下错误:#1 - 找不到照片”

但是当我使用:http://www.flickr.com/services/api/explore/flickr.photosets.getPhotos时,我得到了结果。照片集存在。

Dan Coulter写道:

“*要验证您帐户中的应用以显示您的私人照片:

此方法允许您让应用对一个特定帐户进行身份验证,无论谁查看您的网站。这对于显示私人照片或照片(以及其他内容)非常有用。

注意:下面的方法有点难以理解,因此我设置了一个工具来帮助您完成此操作:

http://www.phpflickr.com/tools/auth/

首先,您必须使用Flickr设置回调脚本。完成后,编辑包含的getToken.php文件的第12行,以反映应用程序所需的权限。然后浏览到该页面。一旦您使用Flickr授权应用程序,它就会将您发回给该页面,该页面将为您提供一个类似于以下内容的令牌:

1234-567890abcdef1234

转到您要创建phpFlickr实例的文件(我建议使用包含文件),在您创建它之后设置要使用的令牌:

$f->setToken("[token string]");

此令牌永不过期,因此您无需担心必须定期登录。*“


因此,我认为我有身份验证问题。这可以解释照片集“不存在”。

但我错在哪里?

有没有办法让1个脚本更简单,而不是2?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

嘿,差不多2年前我自己...... 反正。

我在问题之后找了一个解决方案,但从未发布过回复。我认为对其他人来说,即使是迟到也可能很有趣:

所以,非常确定有更聪明的事情,但我没有找到它。我找到了“一种方法”去做我需要的东西。

我需要制作一个包含私人照片的私人网页。

<?php
require_once("phpFlickr.php");
$f = new phpFlickr('myapikey','myapisecret');
$f->enableCache("fs", "cache");

//This is what I really missed: the token number.
$f->setToken('myratherlongtoken-number');
//Dan Coulter explains it in the documentation of phpFlickr
//He also provides a tool to ask a token.

$username="My Username";
$result = $f->people_findByUsername($username);
$nsid = $result["id"];
?>

//After, you can display infos of your private album (knowing its ID)
//Such as primary photoset image, total number of photos...
<?php $infos = $f->photosets_getInfo('12345MyAlbumId67890'); ?>

//Or even process a loop to display a gallery
<?php $photos = $f->photosets_getPhotos('12345MyAlbumId67890','','5');
foreach ($photos['photoset']['photo'] as $photo): ?>