我正在尝试使用php sdk在我的网络应用程序中实现facebook登录,但它不起作用。出于某种原因,似乎$ _SESSION [" FBRLH_state"]的值在用户从Facebook页面返回以获取应用访问用户信息的权限后被修改。
以下是我正在使用的代码:
facebookloginbutton.php
<?php
session_start();
require_once 'facebook/facebook-php-sdk-v4-5.0.0/src/Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '*****',
'app_secret' => '*****',
'default_graph_version' => 'v2.5',
]);
$helper=$fb->getRedirectLoginHelper();
$permissions=['public_profile']; // Optional permissions
$loginUrl=$helper->getLoginUrl('mydomain.com/snslogin/fb-callback', $permissions);
//output the FBRLH_state here (name this state1)
echo $_SESSION["FBRLH_state"];
?>
<a href="<?php echo htmlspecialchars($loginUrl); ?>">facebook login</a>
fb-callback.php(仅限其顶部)
<?php
session_start();
require_once 'facebook/facebook-php-sdk-v4-5.0.0/src/Facebook/autoload.php';
//output $_SESSION["FBRLH_state"] (name this state2)
var_dump($_SESSION);
//output the state variable in the URL (name this state3)
echo '<br>'.$_GET["state"].'<br>';
在上面的代码中,我得到了state1和state3的相同值,但是状态2由于某种原因不同。由于这些值不同,程序不会继续使用fb-callback.php的其余代码。
我已经在另一个网络应用程序中使用facebook帐户进行了php登录,所以我想我知道自己在做什么,但我找不到我正在犯的错误。