好的..我终于让它与 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/manual/en/function.curl-setopt.php) 为我们完成了艰苦的工作。
它将 $parameters(包括上传的照片)发送到 http 请求的 post 字段,该字段应该为我们以二进制格式上传。
但是,我在CURL PHP send image 中发现了一条精彩的评论
指出:
"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 将默认值更改为 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, false);
就是这样。 (-: