1

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

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

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

4

1 回答 1

3

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

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

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

但是,上传示例一直给我“无效签名”错误......我检查了代码。Flickr.php 在签署请求之前正确取消设置 photo 参数,然后将其添加回来并提交与以下内容完全相同的请求:www.flickr.com/services/api/upload.api.html

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

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

但是,我在CURL PHP 发送图像中发现的一条精彩评论 指出:“CURLOPT_SAFE_UPLOAD 在 5.6.0 中默认为 true ...因此您需要在设置 CURLOPT_POSTFIELDS 之前添加 curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);

检查手册:http ://au.php.net/manual/en/function.curl-setopt.php 它说:“在 PHP 5.5.0 中添加了 FALSE 作为默认值。PHP 5.6.0 更改了默认值为真。”

因此,如果您的 php 版本是 5.5.0,则该库可以正常工作,而如果使用 PHP 5.6.0 版本,您需要在 Flickr.php 中的 677 之前添加一行,以将 CURLOPT_SAFE_UPLOAD 更改为 false(这就是该库与一些和其他人没有)。

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

而已。(-:

于 2016-06-24T11:24:02.880 回答