php - Facebook SDK Error: Cross-site request forgery validation failed. The "state" param from the URL and session do not match -
i having problem facebook sdk, getting same error:
error:
facebook sdk returned error: cross-site request forgery validation failed. "state" param url , session not match.
php script:
<?php if(!session_id()) { session_start(); }require_once __dir__ . '/facebook/autoload.php'; $fb = new facebook\facebook([ 'app_id' => 'xxxxxxxxxxxxxxxx', 'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx', 'default_graph_version' => 'v2.5', ]); $helper = $fb->getredirectloginhelper(); $permissions = ['email']; // optional try { if (isset($_session['facebook_access_token'])) { $accesstoken = $_session['facebook_access_token']; } else { $accesstoken = $helper->getaccesstoken(); } } catch(facebook\exceptions\facebookresponseexception $e) { // when graph returns error echo 'graph returned error: ' . $e->getmessage(); exit; } catch(facebook\exceptions\facebooksdkexception $e) { // when validation fails or other local issues echo 'facebook sdk returned error: ' . $e->getmessage(); exit; } if (isset($accesstoken)) { if (isset($_session['facebook_access_token'])) { $fb->setdefaultaccesstoken($_session['facebook_access_token']); } else { // getting short-lived access token $_session['facebook_access_token'] = (string) $accesstoken; // oauth 2.0 client handler $oauth2client = $fb->getoauth2client(); // exchanges short-lived access token long-lived 1 $longlivedaccesstoken = $oauth2client->getlonglivedaccesstoken($_session['facebook_access_token']); $_session['facebook_access_token'] = (string) $longlivedaccesstoken; // setting default access token used in script $fb->setdefaultaccesstoken($_session['facebook_access_token']); } // redirect user same page if has "code" variable if (isset($_get['code'])) { header('location: ./'); } // getting basic info user try { $profile_request = $fb->get('/me?fields=name,first_name,last_name,email'); $profile = $profile_request->getgraphnode()->asarray(); } catch(facebook\exceptions\facebookresponseexception $e) { // when graph returns error echo 'graph returned error: ' . $e->getmessage(); session_destroy(); // redirecting user app login page header("location: ./"); exit; } catch(facebook\exceptions\facebooksdkexception $e) { // when validation fails or other local issues echo 'facebook sdk returned error: ' . $e->getmessage(); exit; } // printing $profile array on screen holds basic info user print_r($profile); // can redirect page , use access token $_session['facebook_access_token'] } else { // replace website url same added in developers.facebook.com/apps e.g. if used http instead of https , used non-www version or www version of website must add same here $loginurl = $helper->getloginurl('http://localhost/myquizlife/', $permissions); echo '<a href="' . $loginurl . '">log in facebook!</a>'; }
Comments
Post a Comment