3

file_get_contents が次の URL で機能しない (ストリームを開くことができませんでした: HTTP 要求が失敗しました! HTTP/1.0 400 Bad Request)

$token_url = "https://graph.facebook.com/oauth/access_token?client_id=235326466577139&redirect_uri=http%3A%2F%2Fapps.facebook.com%2Flikeablephotos%2F&client_secret=CLIENT_SECRET&code=AQDFZbjpAUda8c_gz4wDDuBOVrsn0dApz3s8UA--7hFQIi1wb70-tDE56xXcCtDq-hV5UWzR5YEw_ozuGT24FLfvh9KnqHZ3xdn46P_KxYCf3DHJQA3AAu2ICHBqTk1-6fHTsl6FbagKz83H6dn15kkbKksajA4KcVIoPse5JbuBLlh6V5L1ANe8fzR94iH_SMU";

$response = file_get_contents($token_url);

上記の URL をコピーしてブラウザのアドレス バーに貼り付けると、問題なく動作します。そして戻ります:

access_token=AAADWBzZAyUvMBAL2Th6CRtxh2Up5soTCK8N4HJcy0ZBhQgJPxtZArKbuITISMoGLDxNiyeNW4GUZCBvJPeBTH6mx4v83ueUIAAYQJA1WrAZDZD&expires=5112501

しかし、彼の同様の URL (別のユーザー用) も機能します。

$token_url = "https://graph.facebook.com/oauth/access_token?client_id=235326466577139&redirect_uri=http%3A%2F%2Fapps.facebook.com%2Flikeablephotos%2F&client_secret=CLIENT_SECRET&code=AQC2kTEV96-1Cki2oYUhyzjH6yFe6AJRd1Q3G8fbUXW-IsLJUlactzSwCvGVBK6jh1tL-t7v6dOWJZzbkSYhk0n2z6BHQcpljWAdoXFGB5zLC4FgW8fmxT6hwdRIQOr2dZ95CD_q5yJuOUz_2DItUa3_FF9m2_TmFYGEbxPoiaF47YSTUuZp6g-8ffziJcKDAdo";

使用時file_get_contents

助けてください、ありがとう

4

4 に答える 4

3

file_get_contentsの代わりに、cURLの使用を検討しましたか。私は多くのリクエストにcurlを使用して素晴らしい結果を出しましたが、失敗してもクライアントの秘密は公開されません。

http://php.net/manual/en/book.curl.phpを参照してください

このコードスニペットは、すべてのアプリがアプリケーションアクセストークンを取得するための標準です。すべてのAPI呼び出しに使用できます。


$app_access_token = GetCH();
function GetCH(){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
if(substr($url,0,8)=='https://'){
    // The following ensures SSL always works. A little detail:
    // SSL does two things at once:
    //  1. it encrypts communication
    //  2. it ensures the target party is who it claims to be.
    // In short, if the following code is allowed, CURL won't check if the 
    // certificate is known and valid, however, it still encrypts communication.
    curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_ANY);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
}
$sendCH = curl_exec($ch);
curl_close($ch);
return $sendCH;
};
于 2012-06-02T18:39:30.813 に答える
2

最後に答えが見つかりました、同じ問題がありました..問題は、彼らがあなたに与えるfacebookのコードがパラメータの間にスペースを持っているためです。Facebook からコピーして貼り付けただけの場合、HTTP/1.1 400 Bad Request エラーが発生します。すべてのパラメーターを 1 行に配置し、すべてのスペースを削除すると、修正されるはずです。私のために働いた。これが古い投稿であることは承知していますが、この問題が発生している場合は、うまくいくかどうかお知らせください。

于 2012-10-29T00:47:15.347 に答える
0

アクセストークンの有効期限が1時間であるため、URLで提供されたアクセストークンの有効期限が切れたため、同じ問題が発生しました。新しいアクセストークンを作成すると、再び機能します。この情報が役立つことを願っています.

于 2015-07-23T08:09:20.813 に答える
0

デバッグの場合:

$token_url の実際の文字列を取得し、ブラウザーのアドレス フィールドに貼り付けて、何が起こるかを確認します。

いくつかのjsonエラーコードが返されます。

私にとっては、トークンの有効期限が切れていました。新しいリクエストを開始するとうまくいきました。

于 2013-09-12T13:44:44.953 に答える