0

我目前在通过 facebook API 上传图像时遇到问题 - 我没有通过 API 返回任何错误,此时我认为这可能是我传入的文件路径不正确的问题。

用户使用该应用程序后,该图像存储在我们的服务器上,然后我想将其发布到 Facebook。

我的代码如下:

运行后我没有收到来自 API 的响应,而如果我故意更改 oauth_token 我会收到一个错误(所以我知道数据肯定在发布)

我也在打印 args 数组,这样我就可以准确地看到我发布的内容:

这是回应。

如果我在 @ 符号之后导航到 URL,即使我删除了 @C:\Domains 并替换为 www,它也会被破坏。如果用户知道文件名,我尝试传递用户实际可以导航到的 URL

例如https://www.example.co.uk/competition/fb/photos/collagetest.jpg

^ 这是一个有效的链接,但在传递图像时仍未实际上传。

任何帮助将不胜感激!

Array ( [message] => Photo from ********[image] => @C:\Domains\******.co.uk\wwwroot\v2\competition\fb\photos\collagetest.jpg )

//upload photo
            $file= './photos/'.basename('collagetest.jpg');
            $args = array(
               'message' => 'Photo from friendbooth',
            );
            $args['image'] = '@' . realpath($file);
            $ch = curl_init();
            $url = 'https://graph.facebook.com/photos?access_token='.$_SESSION['oauth_token'];
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
            $data = curl_exec($ch);
            print_r($args);
            //returns the photo id
            print_r(json_decode($data,true));

            ?>
            <img src="collagetest.jpg" />
            <?
4

2 回答 2

1

如果我在 @ 符号之后导航到 URL,则它已损坏

“破碎”是什么意思?

该文件系统路径是否可以从您的 PHP 脚本中读取?(请检查,不要猜测。)

即使我删除 @C:\Domains 并替换为 www。我试过传入网址

在这个地方给出一个 URL 是胡说八道——这里需要一个文件系统路径。(你知道两者的区别吗?)

于 2012-06-20T10:36:57.697 回答
0

原来它最终与文件路径无关!

添加

            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

彻底解决问题!希望这对将来的其他人有所帮助。如果发布到 HTTPS 网址,如果您没有收到任何响应,请尝试添加以上内容(错误消息等意味着您收到了响应)

于 2012-06-20T16:47:10.097 回答