php flickr 库 API

php library for flickr API

我正在努力尝试使用 Flickr API... 我的目标是能够从我的网站上传图像并在我的 Flickr 帐户中创建相册...... 我尝试了 phpFlickr 库,但显然它需要更新才能获得经过身份验证的令牌...它一直给我 "Invalid auth token".

我阅读了一些有关如何获取令牌的信息,并使用 DPZFlickr 设法获取了 oauth_token 和 oauth_verifier 但未能将其与访问令牌进行交换...它也失败了使用包含的 upload.php 示例将任何照片上传到我的帐户(给我一个 "empty" 错误!)。 在挖掘 DBZ flickr.php 代码后,我在尝试上传到 Flickr 时遇到了这个错误:"oauth_problem=signature_invalid&" 所以我开始搜索如何创建一个有效的签名以最终获得一个有效的访问令牌......并得出结论,如果我要从头开始构建所有东西,这里需要做很多工作。

所以我的问题是:是否有更新的 php 库可用于成功创建相册并将照片上传到我的 Flickr 帐户?还是我应该继续尝试构建一个?

好的..我终于让它与 DPZ 库一起工作了。

任何面临与我相同问题的人供将来参考:

我通过将 auth.php 中的方法更改为 flickr.photosets.create 成功地使用 DPZFlickr 创建了一个相册...这表明该库正确生成了具有写入权限的访问令牌..

然而,上传示例一直给我 "Invalid signature" 错误.... 我检查了代码。 Flickr.php 在签署请求之前正确取消设置照片参数,然后将其添加回去并提交完全按照以下指示的请求:www.flickr.com/services/api/upload.api.html

我在 https://www.flickr.com/groups/51035612836@N01/discuss/72157650261711318/ 中发现了一个讨论,该讨论明确指出错误实际上不是签名问题,而是正在发送的 'photo' 参数才是问题所在。只是 Flickr 不知道如何处理 photo 参数所以它发送签名错误。

那么照片参数有什么问题呢? Flickr API 要求图像必须以二进制形式发送...DBZ 库,Flickr.php 脚本第 677 行,使用 php 中的 cURL 函数为我们完成了艰苦的工作( http://au.php.net/manual/en/function.curl-setopt.php)。 它将 $parameters(包括上传的照片)发送到 http 请求的 post 字段,它应该以二进制格式为我们上传。

然而,我在 CURL PHP send image 中发现了一个精彩的评论 指出: "CURLOPT_SAFE_UPLOAD defaulted to true in 5.6.0... so you will need to add curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); before setting CURLOPT_POSTFIELDS"

查看手册:http://au.php.net/manual/en/function.curl-setopt.php 它说: "Added in PHP 5.5.0 with FALSE as the default value. PHP 5.6.0 changes the default value to TRUE."

因此,如果您的 php 版本是 5.5.0,则库将正常工作,而如果使用 PHP 5.6.0 版本,您需要在 Flickr.php 中的 677 之前添加一行将 CURLOPT_SAFE_UPLOAD 更改为 false(这就是为什么图书馆与某些人合作而其他人不合作的原因)。

要解决问题...只需在 Flickr.php 中的第 677 行之前添加此行: curl_setopt($curl, CURLOPT_SAFE_UPLOAD, 假);

就是这样。 (-: