0

Web アプリケーションを Facebook プラットフォームに統合しようとしています。

以下は私のテストコードです、

 if ($_REQUEST['error_reason']) {  echo("<script> top.location.href='http://facebook.com'</script>"); }
else {  
    $app_id = "APP_CODE";
    $canvas_page = "https://e3xcp.com/hs/fb/";
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($canvas_page) "&scope=email,user_birthday,user_hometown,user_location,user_religion_politics,user_website,user_checkins";

    $signed_request = $_REQUEST["signed_request"];
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
    if (empty($data["user_id"])) {
          echo("<script> top.location.href='" . $auth_url . "'</script>");
    } else {
          echo ("Welcome User: " . $data["user_id"] . "<BR><BR>");
          print_r($data);
          echo "<BR><BR>". $data['oauth_token'] . "<BR><BR>";

          $graph_url = "https://graph.facebook.com/me?access_token=". trim($data['oauth_token']); 
          $json_data = file_get_contents($graph_url);
          $me = json_decode($json_data);
          echo $me->id;
    }
} 

2つの問題があります。

  1. 認証中 (新しいユーザー) に、ユーザーが [許可] ボタンを押すと、ブラウザはキャンバス ページと Facebook サーバーの間を行き来します。

  2. 認証されたユーザーがアプリにアクセスすると、次のエラーが表示されます。

    **> Warning: file_get_contents(https://graph.facebook.com/me?access_token=200335043341031|2.axhed5PlPjICLqIN2ElgGA__.3600.1304254800.1-100001278552830|ez-LK5f_ymd-q9Ju4qa7zAvjEgo) [function.file-get-contents]: failed to open stream: No error in C:\Inetpub\vhosts\E3XCP.COM\httpdocs\hs\FB\index.php on line 19**
    

しかし、GRAPH URLをコピーして貼り付けると

  ***https://graph.facebook.com/me?access_token=200335043341031|2.axhed5PlPjICLqIN2ElgGA__.3600.1304254800.1-100001278552830|ez-LK5f_ymd-q9Ju4qa7zAvjEgo*** it returns the correct output

Facebook 開発者のドキュメントには 2 つの認証サンプルがあり、両方の方法を試しました。

アプリのリンクはhttp://apps.facebook.com/slhoroscope ヘルプ !!!

4

1 に答える 1

1
  1. Canvas URLではなくCanvas Pageを使用する必要があります。$canvas_page = "http://apps.facebook.com/slhoroscope/";
  2. これは、PHP の構成 (おそらく openssl 拡張機能) と関係があります。
于 2011-05-01T12:22:44.560 に答える