私のWebページには、ここでのコードだ、カウントユーザーの友人でログインを取得FQL要求を行うためにPHPを使用していますこれはうまく動作する時がありますが、時々私は400 Bad Requestを取得します。これは、 'q'と 'access_token'を区切っているアンパサンドがエスケープされているために発生しているようです。つまり、私は(動作しない)これを取得:この代わりの断続HTTP400(不正な要求)のfile_get_contentsとFQLを使用して()
https://graph.facebook.com/fql?q=SELECT+friend_count+FROM+user+WHERE+uid%3Dme%28%29&access_token=AAAF8VR3YZCpQBAGiX16jvZAwaEciTwZB1QZAaUjcjy82Ce7Ov7nPqNxjsKM1SAZASGVcZCJ80R9KJZBJYrjKmsDVK6YNrPGA7plPVuwCFZCaOwZDZD
(作品 - 同じ要求が、 '&アンペアを;' '&' に置き換えられています):
https://graph.facebook.com/fql?q=SELECT+friend_count+FROM+user+WHERE+uid%3Dme%28%29&access_token=AAAF8VR3YZCpQBAGiX16jvZAwaEciTwZB1QZAaUjcjy82Ce7Ov7nPqNxjsKM1SAZASGVcZCJ80R9KJZBJYrjKmsDVK6YNrPGA7plPVuwCFZCaOwZDZD
私が試しましたPHPは、明示的にエスケープアンパサンドを交換するが、無駄にする文字列を指示するようにそれに応じて自分のコードを調整する:
$graph = 'https://graph.facebook.com/fql?q=';
$graph .= 'SELECT+friend_count+FROM+user+WHERE+uid%3Dme%28%29';
$graph .= '&access_token=' . $access_token;
$result = file_get_contents($graph);
$graphNoEscape = str_replace('&', '&', $graph);
$result = file_get_contents($graphNoEscape);
を誰もが問題の解決策を知っていますか?このコードが時々動作するのは面倒ですが、すべてではありません!これを発見し、同じ問題を抱えている誰のために
「&」は、HTML属性の一部としてURLに '&'文字を使用している場合にのみ必要です(ただし、必ずしも必須ではありません)。通常、URLには表示されません。 – hayavuk