2012-02-17 58 views
3

Facebook APIを使用してfqlクエリを実行しようとしています。私は、コードがどのように見えるかですここではPHPですべてを設定しますFacebook API 400 Bad Request

$app_id = 'APP_ID'; 
    $app_secret = 'APP_secret'; 
    $my_url = "url.com/facebook.php"; 


    $code = $_REQUEST["code"]; 

//auth user 
if(empty($code)) { 
    $dialog_url = 'https://www.facebook.com/dialog/oauth?client_id=' 
    . $app_id . '&redirect_uri=' . urlencode($my_url) ; 
    echo("<script>top.location.href='" . $dialog_url . "'</script>"); 
    } 

    //get user access_token 
    $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); 


    // Run fql query 
    $fql_query_url = 'FQL_Query'; 
    $fql_query_result = file_get_contents($fql_query_url); 
    $fql_query_obj = json_decode($fql_query_result, true); 

すべては上記のコードを使用してうまくいきましたが、最近私は私のURL構造を変更することを決め、代わりにurl.com/facebookを経由してページにアクセスします.phpurl.com/#facebookでアクセスします。

私が$ my_url変数にこの変更を加えたとき、私は以下のエラーを受け取りました。

[function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request 

ありがとう!

答えて

0

まず、Facebookのアプリケーション設定から始めましょう。アプリの設定では、「キャンバスURL」を定義します。変更する場合は、コード内だけでなく開発者アプリのアプリケーション設定でも変更する必要があります。

もう1つのことは、facebookがあなたのページをURLで呼び出す場合、認証のために行くときにredirect_uriパラメータに全く同じURLを使用する必要があるということです。ドキュメントに記載されています(http://developers.facebook.com/docs/authentication/)。これは、彼らがREDIRECT_URIについて書いたものです:

REDIRECT_URIはあなたが開発者Appの[概要]タブの ウェブサイトのセクションで指定したサイトのURLのパスになければなりません。ドメインのルートが の場合は、末尾にスラッシュを付ける必要があります。 redirect_uriはリダイレクタにすることはできません。あなたのアプリを認証するために

、あなたはグラフAPIトークンエンドポイントに承認 コードとアプリの秘密を渡す必要があります - 上記の使用まったく同じREDIRECT_URI と一緒に - でhttps://graph.facebook.com/oauth/access_token

ここで、あなたが(#)でハッシュを持つようにURLを変更することは良いことではありません。このURLの部分は、あなたが使用しようとしているもののためのものではありません。ちょうどGoogleの "URLのハッシュ部分"と少しをお読みください。

+0

お返事ありがとうございます。保存しているデータの一部が失われるため、ユーザーにページを更新させることができないため、URLにハッシュを使用する必要があります。私は幸運で上記のすべてを試みた。 FacebookではURLにハッシュを使用できますか? – user1210772

+0

ファイル取得コンテンツメソッドを使用すると問題が発生することを示す最後の日にいくつかの問題が発生しました... http://stackoverflow.com/questions/6903240/getting-404-error-from -facebook-graph-apiおよびhttp://stackoverflow.com/questions/9333139/facebook-auth-with-high-traffic-sites-empty-access-tokens-empty-me#comment11778884_9333139を参照してください。その問題のほかに、サーバーの問題にハッシュを使用しないことを強くお勧めします。クライアント側の機能のみに使用する必要があります。 –

+0

お返事ありがとうございます。私はあなたが私を送って、まだ少し失われているリンクを越えました。 – user1210772

0

extension=php_openssl.dllxampp/php/php.iniに追加してXAMPPで解決しました。 XAMPPのいくつかのバージョンでは、この行は;extension=php_openssl.dll、 のようにコメントされていますので、コメントを外してapacheを再起動してください。

関連する問題