简体   繁体   English

Facebook php sdk问题:请确保您的redirect_uri与您在OAuth对话框请求中使用的相同

[英]Facebook php sdk problom: Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request

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 请确保您的redirect_uri与您在OAuth对话框请求中使用的相同

I don't know how to fix it 我不知道怎么解决

login.php login.php

<?
session_start();
$fb = new Facebook\Facebook([
'app_id' => '$id', // Replace {app-id} with your app id
'app_secret' => '$secret',
'default_graph_version' => 'v2.2', 
]);

$helper = $fb->getRedirectLoginHelper();

$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('http://localhost:80/fb_test/fb-
callback.php', $permissions);

echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!
</a>';
 ?>

fb-callback.php fb-callback.php

 <?
session_start();

$fb = new Facebook\Facebook([
'app_id' => '1428245583931211', // Replace {app-id} with your app id
'app_secret' => 'cf045e5b4da0abf920b01447f23b09cd',
'default_graph_version' => 'v2.2',
]);

$helper = $fb->getRedirectLoginHelper();

try {$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}

if (! isset($accessToken)) {
if ($helper->getError()) {
header('HTTP/1.0 401 Unauthorized');
echo "Error: " . $helper->getError() . "\n";
echo "Error Code: " . $helper->getErrorCode() . "\n";
echo "Error Reason: " . $helper->getErrorReason() . "\n";
echo "Error Description: " . $helper->getErrorDescription() . "\n";
} else {
header('HTTP/1.0 400 Bad Request');
echo 'Bad request';
}
exit;
}

// Logged in
echo '<h3>Access Token</h3>';
var_dump($accessToken->getValue());

// The OAuth 2.0 client handler helps us manage access tokens
$oAuth2Client = $fb->getOAuth2Client();

// Get the access token metadata from /debug_token
$tokenMetadata = $oAuth2Client->debugToken($accessToken);
echo '<h3>Metadata</h3>';
var_dump($tokenMetadata);

// Validation (these will throw FacebookSDKException's when they fail)
$tokenMetadata->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->validateUserId('123');
$tokenMetadata->validateExpiration();

if (! $accessToken->isLongLived()) {
// Exchanges a short-lived access token for a long-lived one
try {
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
} catch (Facebook\Exceptions\FacebookSDKException $e) {
echo "<p>Error getting long-lived access token: " . $helper->getMessage() . 
"</p>\n\n";
exit;
}

echo '<h3>Long-lived</h3>';
var_dump($accessToken->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/');
?>

this is my app settings enter image description here 这是我的应用程序设置在此处输入图像描述

The getAccessToken method generates the redirect URI parameter for the API call to exchange the code for a token based on the current URL, if none is passed explicitly. 如果未显式传递令牌,则getAccessToken方法将为API调用生成重定向URI参数,以根据当前URL交换令牌的代码。

So if you are not handling the triggering of login (meaning, the call to getLoginUrl ) and processing the returned code value in the same script under the same URL, then you have to pass the first URL to getAccessToken explicitly, so that it sets the same value when making the API request, as getLoginUrl specified when the whole process was started. 因此,如果您没有处理登录的触发(即对getLoginUrl的调用),并且没有在相同的URL下的同一脚本中处理返回的代码值,则必须将第一个URL显式传递给getAccessToken ,以便它设置发出API请求时,该值与启动整个过程时指定的getLoginUrl相同。

try {$accessToken = $helper->getAccessToken('http(s)://whatever/path/login.php');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Facebook 登录:请确保您的 redirect_uri 与您在 OAuth 对话框中使用的相同 - Facebook login: Please make sure your redirect_uri is identical to the one you used in the OAuth dialog 图表返回了一个错误:请确保您的redirect_uri与您在OAuth对话框请求中使用的相同 - Graph returned an error: Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request Facebook 如何手动构建登录流程 (PHP) 错误“您的 redirect_uri 与您在 OAuth 对话请求中使用的不同” - Facebook How Manually Build a Login Flow (PHP) error “your redirect_uri isn't identical to the one you used in the OAuth dialog request” Facebook sdk4的OAuth redirect_uri opencart - OAuth redirect_uri opencart by facebook sdk4 Facebook PHP SDK 上的“redirect_uri URL 必须是绝对的”错误 - “The redirect_uri URL must be absolute” error on Facebook PHP SDK 在getLoginUrl中包含redirect_uri时出错(Facebook PHP SDK) - Error when including redirect_uri with getLoginUrl (Facebook PHP SDK) facebook PHP SDK redirect_uri到页面选项卡 - facebook PHP SDK redirect_uri to page tab redirect_uri URL必须是绝对的Facebook登录PHP SDK - The redirect_uri URL must be absolute Facebook login PHP SDK php sdk的Facebook&#39;redirect_uri&#39;参数未重定向到传递的uri(重定向仅返回首页) - Facebook 'redirect_uri' param for php sdk not redirecting to passed uri (redirects only return to homepage) OAuth后,Facebook redirect_uri无法识别用户 - Facebook redirect_uri does not recognize user after OAuth
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM