4

認証にGraph APIを使用するFacebookアプリケーションに取り組んでいます。コードは明日は正常に機能していましたが、突然ホストに到達できないエラーが発生し始めました。私が使用しているコードは次のとおりです。

$token_url = "https://graph.facebook.com/oauth/access_token?".
                "client_id=[client_id]".
                "&redirect_uri=http://www.next_big_website.com".
                "&client_secret=[client_secret]".
                "&code=" . $_GET['code'].
                "&scope=manage_pages,publish_stream,publish_actions,read_mailbox,email".
                "&response_type=token";
    $response = file_get_contents($token_url);

そして、私が受け取るエラーは次のとおりです。

警告 (2): file_get_contents(https://graph.facebook.com/oauth/access_token?client_id=[client_id]&redirect_uri=http://www.next_big_website.com&client_secret=[client_secret]&code=somelong_and_ugly_code&scope=manage_pages,publish_stream,publish_actions ,read_mailbox,email&response_type=token): ストリームを開けませんでした: ネットワークに到達できません [temp.php、112 行目]

何が原因なのかさっぱり分からないので教えてください。

OK、もう少し掘り下げて解決策を見つけました。これは、Facebook が IPv6 を強制しようとしているために発生します。これは、サーバーが IPv4 を使用して接続しようとするたびに、Facebook が要求を拒否し、tracert が Facebook API サーバーへのパスをトレースし、要求がドロップされるためです。

ありがとう

4

1 に答える 1

2

を使用して修正しました

 $url = ("https://graph.facebook.com/me/access_token?token");
    $c = curl_init();
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_URL, $url);
    curl_setopt($c, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 
    $contents = curl_exec($c);
    $err  = curl_getinfo($c,CURLINFO_HTTP_CODE);
    curl_close($c);
于 2012-06-27T09:02:53.617 に答える