通过facebook API上传照片 - 路径名问题

时间:2012-06-20 10:12:59

标签: php image facebook-graph-api

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

用户使用该应用后,图片会存储在我们的服务器上,然后我会将其发布到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" />
            <?

2 个答案:

答案 0 :(得分:1)

  

如果我在@符号后导航到URL,则会被破坏

“破碎”是什么意思?

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

  

即使我删除@C:\ Domains并替换为www。我试过传递URL

在这个地方提供一个URL是无稽之谈 - 这里需要一个文件系统路径。 (你意识到两者之间的区别吗?)

答案 1 :(得分:0)

结果证明它最终与文件路径无关!

添加

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

彻底解决了这个问题!希望这将有助于其他人。如果您没有收到任何回复(错误消息等意味着您收到回复),如果发布到HTTPS网址,请尝试添加上述内容。