我使用facebook登录我的网站与API v2.4应用程序,PHP 5.4安装在服务器上,但我有一个很大的错误与facebook的身份验证。
当我按下按钮"Login with facebook"而不是重定向我,使会话没有发生,一个?code=XXXXXXXXXX
参数被添加到URL。
我做了一个视频来更好地理解:https://www.youtube.com/watch?v=1Os6Zz-4hjQ
下面是我的facebook代码:require_once( 'Facebook/HttpClients/FacebookHttpable.php' );
require_once( 'Facebook/HttpClients/FacebookCurl.php' );
require_once( 'Facebook/HttpClients/FacebookCurlHttpClient.php' );
require_once( 'Facebook/Entities/AccessToken.php' );
require_once( 'Facebook/Entities/SignedRequest.php' );
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );
use Facebook'HttpClients'FacebookHttpable;
use Facebook'HttpClients'FacebookCurl;
use Facebook'HttpClients'FacebookCurlHttpClient;
use Facebook'Entities'AccessToken;
use Facebook'Entities'SignedRequest;
use Facebook'FacebookSession;
use Facebook'FacebookRedirectLoginHelper;
use Facebook'FacebookRequest;
use Facebook'FacebookResponse;
use Facebook'FacebookSDKException;
use Facebook'FacebookRequestException;
use Facebook'FacebookOtherException;
use Facebook'FacebookAuthorizationException;
use Facebook'GraphObject;
use Facebook'GraphSessionInfo;
//1.Start Session
session_start();
require_once "config.php";
$app_id = 'XXXXXXXXXXXXXXX';
$app_secret = 'YYYYYYYYYYYYYYYYYYYYYYYYYY';
$redirect_url='http://myrealwebsiteurl.com/';
FacebookSession::setDefaultApplication($app_id,$app_secret);
$helper = new FacebookRedirectLoginHelper($redirect_url);
$session = $helper->getSessionFromRedirect();
if(isset($session)){
$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();
$graph = $response->getGraphObject(GraphUser::className());
$name = $graph->getProperty('id');
$full = $graph->getProperty('name');
$full1=explode(' ', $full);
$first=$full1[0];
$rest=ltrim($full, $first.' ');
$fname = $first;
$lname = $rest;
$_SESSION["fb"] = $name;
$check = mysql_query(XXXXXXXXXXXXXXXXXXXXXXX);
$row=mysql_fetch_array($check);
$ip_addr = $_SERVER['REMOTE_ADDR'];
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
$ip_addr = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
}
$geoplugin = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$ip_addr ) );
if ( is_numeric($geoplugin['geoplugin_latitude']) && is_numeric($geoplugin['geoplugin_longitude']) ) {
$lat2 = $geoplugin['geoplugin_latitude'];
$lon2 = $geoplugin['geoplugin_longitude'];
}
mysql_query(XXXXXXXXXXXXXXXXXXXXXXX);
mysql_query(XXXXXXXXXXXXXXXXXXXXXXX);
mysql_query(XXXXXXXXXXXXXXXXXXXXXXX);
if ($row['yyy] != $_SESSION["fb"] || $row['ttt'] == '') {
header("Location: fbregister.php");
mysql_query(XXXXXXXXXXXXXXXXXXXXXXX);
mysql_query(XXXXXXXXXXXXXXXXXXXXXXX);
}
else {
header("Location: profile.php");
}
}
else {
$loginUrl = $helper->getLoginUrl(array(
scope => 'email'
));
echo '<a class="zocial facebook" id="zocial facebook" style="color: white; left: calc(10% - 10px); top: calc(48% - 5px); position: relative;" href='.$loginUrl.'>Login with facebook</a>';
}
?>
除了mysql_query被弃用这一事实外,试着打开错误报告,看看发生了什么…
ini_set("display_errors", 1);
error_reporting(E_ALL);