1

Facebook API を使用して写真をページの壁に投稿するのに問題があります。PHP経由でファイルをアップロードし、 $_FILES[]["tmp_name"] を $filelocation として使用すると、正常に動作します。ただし、 $filelocation をローカル ファイルパス ( /tmp/1351750505-24d.jpg ) に変更すると、機能しません。

/tmp dir 777 を指定し、権限の問題を排除するために、ファイルも 777 であることを確認しました。また、複数のファイルを使用して、1 つのファイルだけの問題ではないことを確認しました。

私が持っている他の唯一の考えは、これは 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);

}
4

1 に答える 1

0

設定$filelocationする/tmp/somefile.jpgと、ローカルパス/ファイルがうまく投稿されます。あなたのコードと私のコードの 1 つの違いに気付きました: 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権限を持つページの管理者であるログイン ユーザーと。

于 2012-11-01T23:12:11.397 に答える