0

私の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); 

を誰もが問題の解決策を知っていますか?このコードが時々動作するのは面倒ですが、すべてではありません!これを発見し、同じ問題を抱えている誰のために

答えて

2

が、これは私がそれを解決する方法である:

まず、私はpublic_htmlの/ WWWフォルダ内の1つのphp.iniの、PHPのバージョン5.3を使用するようにサーバーを語りました。

次のようにその後、私は私のコードを編集した:

$graph = 'https://graph.facebook.com/fql?q='; 
$graph .= urlencode('SELECT friend_count FROM user WHERE uid = me()'); 
$graph .= '&access_token='.$access_token; 
$graphNoEscape = str_replace('&', '&', $graph); 
$file_contents = file_get_contents($graphNoEscape); 
$fql_result = json_decode($file_contents); 
$friend_count = mysql_real_escape_string($fql_result->data[0]->friend_count); 

は確かに私が上)(str_replaceでそれを行っているかもしれないが、それはどれも-レス動作します:)

希望これは助けることができます誰か。

+0

「&」は、HTML属性の一部としてURLに '&'文字を使用している場合にのみ必要です(ただし、必ずしも必須ではありません)。通常、URLには表示されません。 – hayavuk

関連する問題