感谢 Instagram,我对将照片上传到不同的服务有点着迷。 Instagram 的 iPhone 应用程序允许我拍照并快速过滤它们;照片修补完成后,我可以将照片上传到 Instagram、Twitter、Facebook 和 Flickr。这个过程让我想知道使用 PHP 将照片上传到 Flickr 需要什么。这篇文章详细介绍了如何使用 PHP 和 phpFlickr 验证照片并将照片上传到 Flickr。
第 1 步:Flickr 应用程序密钥创建
与所有其他 API 用法一样,您需要前往 Flickr 注册一个 API 密钥。将一个好的描述和标题放在一起,但一个关键是您将回调/重定向 URL 设置为示例页面(或者至少我这样做了)。
第 2 步:获取 phpFlickr
phpFlickr 是 Flickr 推荐的 PHP 库。该库并不完美(似乎存在一些长期存在的重定向问题),但它作为一个通用的 Flickr API 接口做得很好。
第三步:配置和认证
看代码最容易理解流程:
// Start the session since phpFlickr uses it but does not start it itself session_start(); // Require the phpFlickr API require_once('phpFlickr-3.1/phpFlickr.php'); // Create new phpFlickr object: new phpFlickr('[API Key]','[API Secret]') $flickr = new phpFlickr('[API KEY]','[API SECRET]', true); // Authenticate; need the "IF" statement or an infinite redirect will occur if(empty($_GET['frob'])) { $flickr->auth('write'); // redirects if none; write access to upload a photo } else { // Get the FROB token, refresh the page; without a refresh, there will be "Invalid FROB" error $flickr->auth_getToken($_GET['frob']); header('Location: flickr.php'); exit(); }
在启动会话并需要 phpFlickr API 库后,需要创建一个 phpFlickr
实例,为其提供 API 密钥和 API 秘密。创建实例后,将使用 if
语句对来自 Flickr 的 frob
参数作出反应。如果未提供 frob
,则应调用 auth
方法,该方法要么确认身份验证,要么将用户重定向到 Flickr 站点以进行登录。如果 frob
已提供,已设置身份验证令牌并且需要刷新页面(我不确定为什么需要进行重定向,但这是确保身份验证正常工作)。
第四步:上传文件
实际上,使用 phpFlickr 将图像上传到 Flickr 比进行身份验证要容易得多。上传文件就像一个函数调用一样简单:
// Send an image sync_upload(photo, title, desc, tags) // The returned value is an ID which represents the photo $result = $flickr->sync_upload('logo.png', $_POST['title'], $_POST['description'], 'david walsh, php, mootools, dojo, javascript, css');
sync_upload
方法允许的参数很多,但图像、标题、描述和标签是最突出的。还有一个 async_upload
也可以使用。
phpFlickr 还允许简单的读取访问,因此您可以创建照片、标签等的幻灯片,所以不要认为 phpFlickr 只是用于上传!
由于需要 OpenAuth,我第一次尝试创建独立的 PHP/Flickr 脚本失败了。 phpFlickr 在管理整个过程方面做得很好,文档也很适合入门。我遇到了一些“重定向过多”(由我添加的“if”语句修复)和“无效 frob”错误(由附加重定向解决)错误的问题,但除此之外,phpFlickr 是正确的选择!