**我的问题是我无法使用facebook php sdk v4通过域登录我的网站,但是当我在我的本地主机上试用它时它完全正常。可能是什么问题?**
这是我的index.php
<?php include'facebook/fbconnect.php';?>
<?php
require 'connection/connect.inc.php';
require 'connection/core.inc.php';
if(isset($_GET['username'])&&isset($_GET['password'])){
$user=$_GET['username'];
$pass=$_GET['password'];
$query="select Acc_Id from account where Acc_Status_Id=1 and BINARY Acc_Domain_Id=4 and Acc_Username='".$user."' and BINARY Acc_Password='".$pass."' and Acc_Type_Id=1";
if($query_run=mysql_query($query)or die(mysql_error())){
$mysql_rows=mysql_num_rows($query_run);
if($mysql_rows==1){
$user_id = mysql_result($query_run, 0, 'Acc_Id');
$_SESSION['acc_id']=$user_id;
header('Location:index.php');
}else{
?>
<script type="text/javascript">
alert("Invalid Data !");
history.back();
</script>
<?php
}
}
}
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphUser;
use Facebook\GraphSessionInfo;
use Facebook\FacebookHttpable;
use Facebook\FacebookCurlHttpClient;
use Facebook\FacebookCurl;
if(isset($sess)){
//store the token in the php session
$_SESSION['fb_token']=$sess->getToken();
//create request object,execute and capture response
$request = new FacebookRequest($sess,'GET','/me');
// from response get graph object
$response = $request->execute();
$graph = $response->getGraphObject(GraphUser::classname());
// use graph object methods to get user details
$name = $graph->getName();
$id = $graph->getId();
$image = 'https://graph.facebook.com/'.$id.'/picture?width=300';
$email = $graph->getProperty('email');
//db check for fb.
$query="select Acc_Id from account where Acc_Status_Id=1 and BINARY Acc_Domain_Id=1 and Acc_Username='$id' and Acc_Type_Id=1";
if($query_run1=mysql_query($query)or die(mysql_error())){
$mysql_rows1=mysql_num_rows($query_run1);
if($mysql_rows1==1){
$user_id1 = mysql_result($query_run1, 0, 'Acc_Id');
$_SESSION['acc_id']=$user_id1;
}else{
$ins="insert into account (Acc_Username,Acc_Name,Acc_Email,Acc_Type_Id,Acc_Status_Id,Acc_Domain_Id)values('$id','$name','$email',1,1,1)";
//echo $ins;
mysql_query($ins)or die(mysql_error());
$user_id = mysql_insert_id();
$_SESSION['acc_id']=$user_id;
}
}
include 'home_1.php';
}else{
if(loggedin()){
include 'home_1.php';
}else{
include 'home_1G.php';
}
}
?>
这是我的fbconnect.php
<?php
require_once( 'lib/Facebook/FacebookSession.php');
require_once( 'lib/Facebook/FacebookRequest.php' );
require_once( 'lib/Facebook/FacebookResponse.php' );
require_once( 'lib/Facebook/FacebookSDKException.php' );
require_once( 'lib/Facebook/FacebookRequestException.php' );
require_once( 'lib/Facebook/FacebookRedirectLoginHelper.php');
require_once( 'lib/Facebook/FacebookAuthorizationException.php' );
require_once( 'lib/Facebook/GraphObject.php' );
require_once( 'lib/Facebook/GraphUser.php' );
require_once( 'lib/Facebook/GraphSessionInfo.php' );
require_once( 'lib/Facebook/Entities/AccessToken.php');
require_once( 'lib/Facebook/HttpClients/FacebookCurl.php' );
require_once( 'lib/Facebook/HttpClients/FacebookHttpable.php');
require_once( 'lib/Facebook/HttpClients/FacebookCurlHttpClient.php');
/ *使用NAMESPACES * /
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphUser;
use Facebook\GraphSessionInfo;
use Facebook\FacebookHttpable;
use Facebook\FacebookCurlHttpClient;
use Facebook\FacebookCurl;
/ PROCESS /
//1.Stat Session
session_start();
//check if users wants to logout
if(isset($_REQUEST['logout'])){
unset($_SESSION['fb_token']);
}
//2.Use app id,secret and redirect url
$app_id = '**';
$app_secret = '**';
$redirect_url='**';
//3.Initialize application, create helper object and get fb sess
FacebookSession::setDefaultApplication($app_id,$app_secret);
$helper = new FacebookRedirectLoginHelper($redirect_url);
$sess = $helper->getSessionFromRedirect();
//check if facebook session exists
if(isset($_SESSION['fb_token'])){
$sess = new FacebookSession($_SESSION['fb_token']);
} ?>
我确定我将app_id保密,甚至是网址。
答案 0 :(得分:0)
我们最近遇到了类似的问题。本地和测试版服务器工作,但我们的生产服务器没有。
问题是,V4需要PHP 5.4或更高版本。 https://developers.facebook.com/docs/php/gettingstarted/4.0.0
可能不是你的问题,但听起来真的像我们的。希望能帮助到你。