我正在为我的应用程序使用 FB id 功能登录,并开始从 GITHUB (facebook-php-sdk-master) 下载用于 FB 连接的 SDK。
在应用程序中,它有两个示例 1)用于 Javascript api 和 2)用于 PHP api。我想使用 PHP SDK 来忽略用户网站中的 javascript 禁用功能。
现在我输入了我的应用程序
$facebook = new Facebook(array(
'appId' => 'deliberately blank',
'secret' => '',
));
我登录到 facebook 以检查它是否工作,即使用户登录它也总是返回0。
我只是试图打印用户变量
$user = $facebook->getUser();
print_r($user);
我检查了应用程序设置,并为域、URL 和 Canvas URL 正确设置了它们。我还为它禁用了沙盒模式。
这是插件的问题,因为会话没有被捕获,或者我在这里做错了什么?
任何从事或面临类似问题的人请分享您的见解,因为我被卡住了,我试图打印会话数据,使用$_SESSION
它返回一个数组
Array ( [fb_117096311791424_state] => 5faba08750cd6456hbf27580df3b371 )
但我没有得到用户信息。还有其他方法可以实现吗?任何替代 API 等?
更新代码:
define('HTTP_SERVER', "http://".$_SERVER["HTTP_HOST"]); // eg, http://localhost - should not be empty for productive servers
define('HTTPS_SERVER', ''); // eg, https://localhost - should not be empty for productive servers
define('BASE_URL', HTTP_SERVER.'/'); // eg, https://localhost - should not be empty for productive servers
if(HTTP_SERVER == 'http://localhost'){
define('DOCUMENT_SERVER', $_SERVER['DOCUMENT_ROOT'].'/XYZ/');
}else{
define('DOCUMENT_SERVER', $_SERVER['DOCUMENT_ROOT'].'/');
}
require(DOCUMENT_SERVER.'includes/applicationTop.php');
$dataObj = new Database();
$generalObj = new General();
file_get_contents('http://www.ABC.com/login/facebookConnect/fbmain.php');
//require_once('http://www.ABC.com/login/facebookConnect/fbmain.php');
/**
* check if user login first time or second time with facebook, records stored in table and session.
**/
if (!empty($user))
{
$firstName = $userInfo['first_name'];
$lastName = $userInfo['last_name'];
$userName = $userInfo['username'];
$gender = $userInfo['gender'];
$email = $userInfo['email'];
$birthday = $userInfo['birthday'];
$userImage = $fqlResult[0]['pic_square'];
$addressName = $fqlResult[0]['hometown_location']['name'];
$addressCity = $fqlResult[0]['hometown_location']['city'];
$addressState = $fqlResult[0]['hometown_location']['state'];
$addressCountry = $fqlResult[0]['hometown_location']['country'];
$addressZip = $fqlResult[0]['hometown_location']['zip'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date('Y-m-d');
$accountId = strtolower($generalObj->fnCreatePassword(8));
/**
* check user first time login or not with facebook login.
**/
$queryUser = "SELECT tbl_login.userId,tbl_login.accountId,tbl_login.emailId FROM tbl_login WHERE tbl_login.emailId='$email'";
$resultUser = $dataObj->tep_db_query($queryUser);
$userInfo = $dataObj->getRecord($resultUser);
$checkUser = $dataObj->getNumRows($queryUser);
if($checkUser == '0' || $checkUser == '')
{
/**
* if user first time login with facebook then records are inserted into table.
**/
$qyery = "INSERT INTO ".TABLE_LOGIN." (accountId, emailId,activeFlag,facebook_Userid) VALUES('$accountId','$email','1','$username')";
$data = $dataObj->tep_db_query($qyery);
$userID = $dataObj->tep_db_insert_id();
if(!empty($userID))
{
$sql = "INSERT INTO ".TABLE_USER_INFO." (userId,fName,lName,address,city,country,state,postalCode,emailId,user_dob,profile_Image,user_ip,user_date,activeFlag) VALUES('$userID','$firstName','$lastName','$addressName','$addressCity','$addressCountry','$addressState','$addressZip','$email','$birthday','$userImage','$ip','$date','1')";
$data = $dataObj->tep_db_query($sql);
}
//$_SESSION["gobiggiuserFaceBook"] = true;
$_SESSION["UserId"] = $userID;
$_SESSION["username"] = $accountId;
$_SESSION["emailId"] = $email;
$_SESSION["ProfileImage"] = $userImage;
}
else
{
/**
* updated user's info incase user has been updated own profile's records on facebook.
**/
//QUery for update
/**
* If user have already login with facebook then records are taking into session
**/
$_SESSION["UserId"] = $userInfo['userId'];
$_SESSION["username"] = $userInfo['accountId'];
$_SESSION["emailId"] = $userInfo['emailId'];
$_SESSION["ProfileImage"] = $userImage['profile_Image'];
}
$sessionUserid = (!empty($_SESSION["UserId"])) ? $_SESSION["UserId"] : '' ;
if(!empty($sessionUserid)){
echo "herererere in dashboard part";
//exit;
header("Location:".USER_DASHBOARD."userDashboard.php");
exit();
//$generalObj->tep_redirect(FILE_PATH.'userDashboard.php');
}else{
echo "herererere in login part";
exit;
header("Location:".LOGIN."login.php");
exit();
//$generalObj->tep_redirect(FILE_PATH.'login.php');
}
}
else
{
//echo LOGIN.USER_DASHBOARD;
//exit();
/*I always end up here*/
header("Location:".LOGIN."login.php");
exit();
//$generalObj->tep_redirect(FILE_PATH.'login.php');
}
这是fbmain.php
$fbconfig['appid' ] = "deliberately blank";
$fbconfig['secret'] = " ";
$fbconfig['baseurl'] = "http://www.ABC.com/login/facebookConnect/facebookHome.php";
if (isset($_GET['request_ids'])){
//user comes from invitation
//track them if you need
}
$user = null; //facebook user uid
try{
require_once "facebook.php";
}
catch(Exception $o){
error_log($o);
}
// Create our Application instance.
$facebook = new Facebook(array(
'appId' => $fbconfig['appid'],
'secret' => $fbconfig['secret'],
'cookie' => true,
));
//Facebook Authentication part
$user = $facebook->getUser();
// We may or may not have this data based
// on whether the user is logged in.
// If we have a $user id here, it means we know
// the user is logged into
// Facebook, but we don’t know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
//print_r($user);
//exit;
$loginUrl = $facebook->getLoginUrl(
array(
'scope' => 'email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown',
'redirect_uri' => $fbconfig['baseurl']
)
);
$logoutUrl = $facebook->getLogoutUrl();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
//you should use error_log($e); instead of printing the info on browser
d($e); // d is a debug function defined at the end of this file
$user = null;
}
}
//if user is logged in and session is valid.
if ($user){
//get user basic description
$userInfo = $facebook->api("/$user");
// print_r($userInfo);
//Retriving movies those are user like using graph api
try{
$movies = $facebook->api("/$user/movies");
}
catch(Exception $o){
d($o);
}
//update user's status using graph api
//http://developers.facebook.com/docs/reference/dialogs/feed/
if (isset($_GET['publish'])){
try {
$publishStream = $facebook->api("/$user/feed", 'post', array(
'message' => "",
'link' => '',
'picture' => '',
'name' => '',
'description'=> ''
)
);
//as $_GET['publish'] is set so remove it by redirecting user to the base url
} catch (FacebookApiException $e) {
d($e);
}
//echo "login successs!!!";exit;
$redirectUrl = $fbconfig['baseurl'] . '/login.php?success=1';
header("Location: $redirectUrl");
}
//update user's status using graph api
//http://developers.facebook.com/docs/reference/dialogs/feed/
if (isset($_POST['tt'])){
try {
$statusUpdate = $facebook->api("/$user/feed", 'post', array('message'=> $_POST['tt']));
} catch (FacebookApiException $e) {
d($e);
}
}
//fql query example using legacy method call and passing parameter
try{
$fql = "select name, hometown_location, sex, pic_square from user where uid=" . $user;
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$fqlResult = $facebook->api($param);
}
catch(Exception $o){
d($o);
}
}
function d($d){
//echo '<pre>';
//print_r($d);
//echo '</pre>';
}
其他文件来自 SDK 本身。
问候