2017-03-01 11 views
0

FacebookからPHPアプリケーションへのページ/プロファイルの詳細を取得しようとしています。だから私は最初にIDを取得し、次のクエリを実行します。しかし、私はエラーが発生しています。私は、ブラウザ上で同じURLを実行する場合、私が正しく戻ってJSONを取得し、しかしFBグラフAPIのfile_get_contentsのHTTPエラー

Warning: file_get_contents(https://graph.facebook.com/v2.8/40444963499?fields=id,name,picture.width(700).height(700),albums.limit(5) {name,photos.limit(2){name, picture}},posts.limit(5)&access_token="my access token here"): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request

私は、次のエラーを取得しています。

+0

'file_get_contents()'を使う前にあなたのURLをエンコードしましたか? – Raptor

+0

私はurlで 'rawurlencode'を、パラメータで' urlencode'を実行しようとしました。しかし、それはファイル名が長すぎると言います。 –

+0

ちょうど 'urlencode'の後半部分で、私はまだ同じエラーを受け取ります。問題は、ブラウザ上で全く同じURLが動作するため、URLに問題がないと推測しています。 –

答えて

0

ので、エラーがで渡されたパラメータの二つの間にスペースがあったということでしたurl。スペースを印刷しないと仮定してWebブラウザに表示されませんでしたが、スペースのためにfile_get_contentsは機能しませんでした。

1

Windowsではほとんどの場合SSL証明書に問題がありますが、これは運用サイトではお勧めできませんが、開発中は問題ありません。 SSLチェックを無効にすると、サイトに有効なSSL証明書があるかどうか気にしないと効果的に言います。つまり、誰かがgraph.facebook.comを偽装しようとした場合、このサイトと通信しようとしますアクセストークンを盗みます。

$context = stream_context_create(array(
    "ssl"=>array(
     "verify_peer"=>false, 
     "verify_peer_name"=>false, 
    ) 
)); 

file_get_contents('https://graph.facebook.com/v2.8/40444963499?fields=id,name,picture.width(700).height(700),albums.limit(5){name,photos.limit(2){name, picture}},posts.limit(5)&access_token=FB_ACCESS_TOKEN', null, $context); 

あなたが実際にあなたのマシン上の問題を修正するに興味があるなら、この答えを確認してください。PHP - SSL certificate error: unable to get local issuer certificate

+0

私はこれがSSLの問題ではないと思います。そうだった場合、400の応答コードはありません。クライアントとサーバーがセキュリティで保護された接続を正しく設定できない場合、HTTPはまったく話されません。 – CBroe

+0

'ignore_errors'をtrueに設定してHTTPコンテキストを渡すことをお勧めします。そうすれば、リクエスト本体もfile_get_contentsによって取得されます。 – CBroe

+0

ええ、事は、他のすべての要求はうまくいきます。 –

関連する問題