我在使用Facebook功能登录时遇到了麻烦。 我的登录页面中有一个按钮,该按钮链接到以下.php文件。如果登录成功,我将它发送到welcome.php,只需要一个句子进行测试。在我的facebook开发人员设置中,我已经放在域localhost下,因为我在localhost工作,所以网站URL也一样。
问题?当我点击它我得到一个错误说我的会话没有启动。我不知道该怎么办。 Error when clicking login with facebook button
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
ini_set('memory_limit', '-1');
//include o ficheiro do autoloader do SDK
require_once "LoginFB/lib/Facebook/autoload.php";
//include required libraries
use Facebook\Facebook;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Exceptions\FacebookSDKException;
$appId = 'myID'; //Facebook App ID
$appSecret = 'mySecret'; //Facebook App Secret
$redirectURL = 'http://localhost/Driveaway/PedroQuinta/welcome.php'; //Callback URL
$fbPermissions = array('email'); //Optional permissions
$fb = new Facebook(array(
'app_id'=>$appId,
'app_secret'=>$appSecret,
'default_graph_version' => 'v2.9',
));
//get redirect login helper
$helper = $fb->getRedirectLoginHelper();
//Try to get access token
try {
//already login
if(isset($_SESSION['face_access_token'])){
$accessToken = $_SESSION['face_access_token'];
}else{
$accessToken = $helper->getAccessToken();
}
if(isset($accessToken)){
if(isset($_SESSION['face_access_token'])){
$fb->setDefaultAccessToken($_SESSION['face_access_token']);
}else{
//put short-lived access token in session
$_SESSION['face_access_token'] =(string)$accessToken;
// OAuth 2.0 client handler helps manage access tokens
$oAuth2Client = $fb->getOAuth2Client();
//Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['face_access_token']);
$_SESSION['face_access_token']=(string)$longLivedAccessToken;
//Set default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['face_access_token']);
}
//redirects the user back to the same page if url has "code" parameter in query string
if(isset($_GET['code'])){
//getting user facebook profile info
try {
$profileRequest = $fb->get('/me?fields=name, email');
$fbUserProfile = $profileRequest->getGraphNode()->asArray();
//here you can redirect to your homepage.
echo "<pre/>";
print_r($fbUserProfile);
} catch (FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
session_destroy();
// Redirect user back to app login page
header("Location: ./");
exit;
} catch (FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
}
}else{
//get login url
$loginUrl = $helper->getLoginUrl($redirectURL, $fbPermissions);
header("Location: ".$loginUrl);
}
} catch (FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch (FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
?>