例に従って、ここから Facebook へのサーバー側ログインを作成しようとしていますが、うまくいきません。ステップ 7 で、コードをトークンと交換し、後で使用するためにセッションに保存しようとすると、常に次のエラーが発生します。
file_get_contents(): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
私はこれがすでに何度も尋ねられたことを知っていますが、これを解決することはできません.
他の質問では、PHP SDK を使用するように言われましたが、どの方法を使用すればよいかわかりません。だから私はここで完全に迷っています。
ログインフォームを呼び出すためのコードは次のとおりです。
<a href="<?php echo LOGIN_URL; ?> ?>" class="btn btn-primary">Login with Facebook</a>
ここで、LOGIN_URL は次のように定義されます。
define("LOGIN_URL", $facebook->getLoginUrl(array("redirect_uri" => APP_URL . "fb_login")));
fb_login には、次のコードがあります。
$app->get("/fb_login", function() use($app, $facebook)
{
$code = $_REQUEST["code"];
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . APP_ID . "&redirect_uri=" . APP_URL . $_SESSION["request_uri"] // Previous URL
. "&client_secret=" . APP_SECRET . "&code=" . $code;
$response = file_get_contents($token_url); // Doesn't work
$params = null;
parse_str($response, $params);
$_SESSION["access_token"] = $params["access_token"];
// Let's try with cURL...
// $ch = curl_init();
// curl_setopt($ch, CURLOPT_URL, $token_url);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// $output = curl_exec($ch); // Returns false
// curl_close($ch);
$graph_url = "https://graph.facebook.com/me?access_token="
. $params["access_token"];
$user = json_decode(file_get_contents($graph_url));
echo("Hello " . $user->name);
var_dump($code); die();
});
どんな助けでも大歓迎です。前にありがとう。