将照片发布到Facebook适用于$ _FILES [] [“tmp_name”],但不适用于本地文件路径?

时间:2012-11-01 06:59:44

标签: php facebook facebook-graph-api photo

我无法使用facebook api将照片发布到页面墙上。如果我通过php上传文件并使用$ _FILES [] [“tmp_name”]作为我的$ filelocation它工作正常。但是,如果我将$ filelocation更改为本地文件路径(/tmp/1351750505-24d.jpg),它将无法正常工作。

我已经给了我的/ tmp目录777,并确保我的文件也是777,以消除任何权限问题。我还使用了多个文件来确保它不仅仅是一个文件的问题。

我唯一的另一个想法是,这可能是php.ini中的一个随机设置,但我没有看到任何瞪着我的东西。

错误日志:

[Thu Nov 01 06:52:13 2012] [error] [client 66.x.x.x] {"error":{"message":"(#1) An unknown error occurred","type":"OAuthException","code":1}}, referer: http://origin.example.com/adder/index.php
[Thu Nov 01 06:52:13 2012] [error] [client 66.x.x.x] $filelocation = /tmp/1351752730-24e.jpg, referer: http://origin.example.com/adder/index.php




[ec2-user@ip-10-x-x-x adder]$ ll /tmp/1351750505-24d.jpg
-rwxrwxrwx 1 apache apache 331 Nov  1 06:15 /tmp/1351750505-24d.jpg


$facebook->setFileUploadSupport(true);
$post_id = "";

try
{
    $post_id = $facebook->api("/$page_id/photos", 'POST',
                                array(
                                    'source' => '@' . $filelocation,
                                    'message' => $name
                                 ));
    error_log("\$filelocation = " . $filelocation);
} catch (FacebookApiException $e)
{
    $result = $e->getResult();
    error_log(json_encode($result));
    $post_id["id"] = "FAIL!";
    error_log("\$filelocation = " . $filelocation);

}

1 个答案:

答案 0 :(得分:0)

当我将$filelocation设置为/tmp/somefile.jpg时,它会发布本地路径/文件。我注意到你的代码和我的代码之间存在一个区别:我在POST调用中包含了页面访问令牌:

$local_path = '/tmp/water96x96.jpg';

$args = array(
  'access_token' => $page_info['access_token'],
  'message' => 'Testing photo upload via SDK!',
  'source' => '@'.$local_path,
);

$post_id = $facebook->api('/'.$page_id.'/photos', 'post', $args);

要获取页面访问令牌,我执行:

$page_info = $facebook->api('/'.$page_id.'?fields=access_token');

注册用户是具有manage_pages权限的网页的管理员。