title: Facebook php sdk problom: Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request
body: <p>Graph returned an error: Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request</p>
  
  <p>I don't know how to fix it</p>
  
  <p>login.php</p>
  
  <pre><code>&lt;?
  session_start();
  $fb = new Facebook\Facebook([
  'app_id' =&gt; '$id', // Replace {app-id} with your app id
  'app_secret' =&gt; '$secret',
  'default_graph_version' =&gt; 'v2.2', 
  ]);
  
  $helper = $fb-&gt;getRedirectLoginHelper();
  
  $permissions = ['email']; // Optional permissions
  $loginUrl = $helper-&gt;getLoginUrl('http://localhost:80/fb_test/fb-
  callback.php', $permissions);
  
  echo '&lt;a href="' . htmlspecialchars($loginUrl) . '"&gt;Log in with Facebook!
  &lt;/a&gt;';
   ?&gt;
  </code></pre>
  
  <p>fb-callback.php</p>
  
  <pre><code> &lt;?
  session_start();
  
  $fb = new Facebook\Facebook([
  'app_id' =&gt; '1428245583931211', // Replace {app-id} with your app id
  'app_secret' =&gt; 'cf045e5b4da0abf920b01447f23b09cd',
  'default_graph_version' =&gt; 'v2.2',
  ]);
  
  $helper = $fb-&gt;getRedirectLoginHelper();
  
  try {$accessToken = $helper-&gt;getAccessToken();
  } catch(Facebook\Exceptions\FacebookResponseException $e) {
  // When Graph returns an error
  echo 'Graph returned an error: ' . $e-&gt;getMessage();
  exit;
  } catch(Facebook\Exceptions\FacebookSDKException $e) {
  // When validation fails or other local issues
  echo 'Facebook SDK returned an error: ' . $e-&gt;getMessage();
  exit;
  }
  
  if (! isset($accessToken)) {
  if ($helper-&gt;getError()) {
  header('HTTP/1.0 401 Unauthorized');
  echo "Error: " . $helper-&gt;getError() . "\n";
  echo "Error Code: " . $helper-&gt;getErrorCode() . "\n";
  echo "Error Reason: " . $helper-&gt;getErrorReason() . "\n";
  echo "Error Description: " . $helper-&gt;getErrorDescription() . "\n";
  } else {
  header('HTTP/1.0 400 Bad Request');
  echo 'Bad request';
  }
  exit;
  }
  
  // Logged in
  echo '&lt;h3&gt;Access Token&lt;/h3&gt;';
  var_dump($accessToken-&gt;getValue());
  
  // The OAuth 2.0 client handler helps us manage access tokens
  $oAuth2Client = $fb-&gt;getOAuth2Client();
  
  // Get the access token metadata from /debug_token
  $tokenMetadata = $oAuth2Client-&gt;debugToken($accessToken);
  echo '&lt;h3&gt;Metadata&lt;/h3&gt;';
  var_dump($tokenMetadata);
  
  // Validation (these will throw FacebookSDKException's when they fail)
  $tokenMetadata-&gt;validateAppId('{app-id}'); // Replace {app-id} with 
  your app id
  // If you know the user ID this access token belongs to, you can validate it 
  here
  //$tokenMetadata-&gt;validateUserId('123');
  $tokenMetadata-&gt;validateExpiration();
  
  if (! $accessToken-&gt;isLongLived()) {
  // Exchanges a short-lived access token for a long-lived one
  try {
  $accessToken = $oAuth2Client-&gt;getLongLivedAccessToken($accessToken);
  } catch (Facebook\Exceptions\FacebookSDKException $e) {
  echo "&lt;p&gt;Error getting long-lived access token: " . $helper-&gt;getMessage() . 
  "&lt;/p&gt;\n\n";
  exit;
  }
  
  echo '&lt;h3&gt;Long-lived&lt;/h3&gt;';
  var_dump($accessToken-&gt;getValue());
  }
  
  $_SESSION['fb_access_token'] = (string) $accessToken;
  
  // User is logged in with a long-lived access token.
  // You can redirect them to a members-only page.
  //header('Location: http:/localhost:80/fb_test/');
  ?&gt;
  </code></pre>
  
  <p>this is my app settings
  <a href="https://i.stack.imgur.com/8smqN.jpg" rel="nofollow noreferrer">enter image description here</a></p>