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を渡してみました

この場所に URL を指定するのはナンセンスです。ここにはファイル システム パスが必要です。(この2つの違いはわかりますか?

于 2012-06-20T10:36:57.697 に答える
0

結局、ファイルパスとは何の関係もなかったことが判明しました!

追加

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

問題を完全に解決しました!これが将来他の誰かに役立つことを願っています。HTTPS URL に投稿する場合、応答が得られない場合は上記を追加してみてください (エラー メッセージなどは、応答を得ていることを意味します)。

于 2012-06-20T16:47:10.097 に答える