Facebookログインを実装しようと思いCSRF対策を行っているのですが$_SESSION['state']に入れた値と$_GET['state']で返ってきた値が違うのですが原因がよくわかりません。
はじめはうまくいっていたようなのですが急にエラーが出るようになりました。
▼コード
if (empty($_GET['code'])) {
$_SESSION['state'] = sha1(uniqid(mt_rand(), true)); $params = array( 'client_id' => APP_ID, 'redirect_uri' => SITE_URL.'redirect.php', 'state' => $_SESSION['state'], 'scope' => 'user_website,friends_website' ); $url = "https://www.facebook.com/dialog/oauth?".http_build_query($params); header('Location: '.$url); exit;
}else {
if ($_SESSION['state'] != $_GET['state']) { var_dump($_SESSION['state']); var_dump($_GET['state']); echo "不正な処理"; exit; }
▼ブラウザー
string(40) "d4ef55bacd10ed0cd6f69450de22b0ccb23d0eb4" string(40) "bd1dd9f6d2d25b71e7d4e2e6ff744de56bc47d8b" 不正な処理
あなたの回答
tips
プレビュー