好的..我终于让它与 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);
而已。(-: