Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法通过Graph/CURL将图片发布到Facebook_Php_Facebook_Facebook Graph Api_Curl - Fatal编程技术网

Php 无法通过Graph/CURL将图片发布到Facebook

Php 无法通过Graph/CURL将图片发布到Facebook,php,facebook,facebook-graph-api,curl,Php,Facebook,Facebook Graph Api,Curl,关于这一点,这里已经进行了一些讨论,我已经尝试了我找到的所有建议,但没有成功 每次我使用我的应用程序发布到FB wall,除了墙上没有显示的该死的图片外,一切都进行得很顺利 我使用CURL如下 $attachment = array( 'access_token' => $fb_user['access_token'], 'message' => $fb['post_text'], 'link' => $fb['post

关于这一点,这里已经进行了一些讨论,我已经尝试了我找到的所有建议,但没有成功

每次我使用我的应用程序发布到FB wall,除了墙上没有显示的该死的图片外,一切都进行得很顺利

我使用CURL如下

$attachment =  array(
    'access_token'  => $fb_user['access_token'],
    'message'       => $fb['post_text'],
    'link'          => $fb['post_url'],
    'name'          => $fb['post_title'],
    'description'   => 'bla',
    'picture'       => rawurlencode($fb['post_picture']),
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/' . $fb_user['uid'] . '/feed');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output
$result = curl_exec($ch);
curl_close($ch);
我相信你以前看过这段代码。不管怎样,这幅画并没有挂在墙上

我已经通过FB linter运行了图片URL,它返回200,但是给出了一个看似矛盾的错误

http://example.com/images/pictures/post/full/0367496d7569e6a85ec4d64af02f6b60.jpg
Response Code:  200
Errors That Must Be Fixed
Can't Download: Could not retrieve data from URL.
当然,我可以在浏览器上打开图像。图片路径上的所有文件夹都是
755
,图片本身是
644

因此,如果你有任何想法扔给我,请给我一个指针如何调试这个。欢迎提出任何意见

谢谢

++++++++++++++++++++

$attachment =  array(
    'access_token'  => $fb_user['access_token'],
    'message'       => $fb['post_text'],
    'link'          => $fb['post_url'],
    'name'          => $fb['post_title'],
    'description'   => 'bla',
    'media'         => array(
                       'type' => 'image',
                       'src'  => rawurlencode($fb['post_picture']),
                       'href' => $fb['post_url'],
                       ),
);

编辑:下面的答案适用于“发布流”,而不是“提要”

所以他没有回答这个问题

对不起

抢劫


您需要将图片包含在“媒体”中,因此您的数据数组是错误的

这是我的Javascript代码——与PHP的结构相同

  attachment: {
    name: name,
    caption: caption,
    description: description,
    href: link ,
    media: [{
      type: 'image',
      src: picture,
      href: link
    }]
  },

编辑:下面的答案适用于“发布流”,而不是“提要”

所以他没有回答这个问题

对不起

抢劫


您需要将图片包含在“媒体”中,因此您的数据数组是错误的

这是我的Javascript代码——与PHP的结构相同

  attachment: {
    name: name,
    caption: caption,
    description: description,
    href: link ,
    media: [{
      type: 'image',
      src: picture,
      href: link
    }]
  },

您是否确保您的服务器可以公开访问?顺便说一句,你是想上传一张照片还是只是把一个URL传给Facebook?是的,服务器是公开的-而且我实际上是在发布IMG URL,而不是上传图片本身-如果你有任何想法,请让我知道如果你发布图片URL,然后,您可以轻松验证FB是否正在接触您的服务器以获取该图像:检查访问日志。您是否确保您的服务器可以公开访问?顺便说一句,你是想上传一张照片还是只是把一个URL传给Facebook?是的,服务器是公开的-而且我实际上是在发布IMG URL,而不是上传图片本身-如果你有任何想法,请告诉我如果你发布了一个图片URL,那么你可以很容易地验证FB是否正在接触你的服务器以获取该图片:检查访问日志。另外,查看Facebook的PHP SDK。这可能会让你省去很多麻烦(只要你不使用PHP会话做任何事情,那么它就会把你搞得一团糟)如果您未登录Facebook SDK,则使用$\u SESSIONS=array()指令。有点难以置信,但它就在那里。清理您可能有的任何会话处理。谢谢@Robbie我将在几个小时内测试您的解决方案-使用SDK是否意味着我将上传图片到FB(而不是发送链接?)否-您正在发送链接。与您尝试做的一样,只需稍微更改“附件”的结构。另外,请查看Facebook的PHPSDK。这可能会让你省去很多麻烦(只要你不使用PHP会话做任何事情,那么它就会把你搞得一团糟)如果您未登录Facebook SDK,则使用$\u SESSIONS=array()指令。有点难以置信,但它就在那里。清理您可能有的任何会话处理。谢谢@Robbie我将在几个小时内测试您的解决方案-使用SDK是否意味着我将上传图片到FB(而不是发送链接?)否-您正在发送链接。和你想做的一样,只是稍微改变一下你“依恋”的结构。