0

Facebook機能(個人的なメッセージの送信、ウォールへの投稿)を備えたWebサイトがあります。wall photosユーザーのアルバムに画像を投稿するフォームのページがあります。

私の問題は、画像を投稿した後(フォームを投稿した後)、次のURLにリダイレクトされることです。 https://graph.facebook.com/'ALBUM_ID'/photos?access_token=AAAEzcP64ySABAA3YYxBzRlrtUn..............

そしてブラウザで私はこれを見る:(私はセキュリティのために数字を削除した)

{
   "id": "ID NUMBER HERE", 
   "post_id": "POST ID NUMBER HERE"
}

Facebookに自分のページに戻るように指示するにはどうすればよいですか。

私のコードは次のとおりです。

$app_id = APP_ID;
$app_secret = APP_SECRET;
$my_url = "MY_URL";
$page_id = "PAGE_ID"; // Set this to your APP_ID for Applications

$code = $_REQUEST["code"];

if(empty($code)) {
  // Get permission from the user to publish to their page. 
  $dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
    . $app_id . "&redirect_uri=" . urlencode($my_url)
    . "&scope=publish_stream,manage_pages";
  echo('<script>top.location.href="' . $dialog_url . '";</script>');
} else {

  // Get access token for the user, so we can GET /me/accounts
  $token_url = "https://graph.facebook.com/oauth/access_token?client_id="
      . $app_id . "&redirect_uri=" . urlencode($my_url)
      . "&client_secret=" . $app_secret
      . "&code=" . $code;
  $access_token = file_get_contents($token_url);

  $accounts_url = "https://graph.facebook.com/me/accounts?" . $access_token;
  $response = file_get_contents($accounts_url);

  // Parse the return value and get the array of accounts we have
  // access to. This is returned in the data[] array. 
  $resp_obj = json_decode($response,true);
  $accounts = $resp_obj['data'];



  // Find the access token for the page to which we want to post the video.
  foreach($accounts as $account) {
       if($account['id'] == $page_id) {
         $access_token = $account['access_token'];
         break;
       }
  }

  $ALBUM_ID = "ALBUM_ID";

      // Show photo upload form to user and post to the Graph URL
      $image_post = "https://graph.facebook.com/" . $ALBUM_ID . "/photos?"
      . "access_token=" .$access_token;

        $video_post = "https://graph-video.facebook.com/" . $page_id . "/videos?"
      . "title=testTitle" . "&description=testDescription"
      . "&access_token=". $access_token;

?>
  <table align="center">
             <tr>                                                                                                 
                 <td>

                     <?php
         echo '<html><body>';
         echo '<form enctype="multipart/form-data" action="'
         .image_post.' "method="POST">';
         echo 'Please choose a photo: ';
         echo '<input name="source" type="file"><br/>';
         echo 'Say something about this photo: <br/>';
         echo '<textarea id="fbText" name="message" 
             rows="4" cols="47">';
         echo '</textarea><br/><br/>';
         echo '<input type="submit" value="Upload"/><br/>';
         echo '</form>';
         echo '</body></html>';
      }
          ?>
                 </td>

             </tr>
  <?php

に追加しようとし&redirect_uri=" . urlencode($my_url)ました$image_postが、動作は何も変わらず、戻ることなく同じページにリダイレクトされました。

ありがとう。

4

1 に答える 1

1

私が見ているように、3つのオプションがあります。

1。これは、Facebookから返される応答を気にしない場合にのみ機能します。

<iframe name="uploader" onLoad="locationChange(this)"></iframe>

<form method="POST" action="..." target="uploader">
...
</form>

funnction locationChange(ifrm) {
    console.log("iframe location has changed to: ", ifrm.src);
}

それに関する問題は、アップロードが失敗した場合、気付かないことです。つまり、成功したアップロードと失敗したアップロードを区別できません。
iframeからデータを読み取れない理由は、ページのドメインがiframeとは異なるためです。この場合、同一生成元ポリシーにより、ブラウザは通信をブロックします。

2。画像をサーバーにアップロードしてから、phpから画像をfacebookにアップロードします。
これを使用できます:FacebookのGraphAPIを使用して写真をアルバムにアップロードします

3。ajaxを使用して画像をアップロードできます。たとえば、次のようないくつかの手法があります。Jqueryを使用してページを更新せずにAjax画像をアップロードする

于 2012-06-27T19:07:01.393 に答える