Facebook使用php确认登录javascript

时间:2015-09-02 14:02:27

标签: php facebook facebook-graph-api facebook-php-sdk

我正在寻找一些与我非常相似的问题,但仍然在这里丢失了。我对JS部分没有任何问题。我登录并获得了我的令牌。现在我需要将http请求发送到将在数据库中执行查询的php。我如何信任客户请求?我想我必须在服务器端确认用户。所以我采用了php SDK:

编辑:这是更新后的代码,现在正在运行。 $ fbToken通过JavaScript获得并通过Ajax请求传递给php。还没有使用FacebookSession,宝贝步骤...

$Login = ($_SESSION["Login"])? $_SESSION["Login"] : (object)array("ativo"=>FALSE, "metodo"=>"", "id"=>-1, "nome"=>"", "tipo"=>"", "publico"=>"", "nLogin"=>0, "captcha"=>"") ;
//
$fbPhpUser = FALSE;
require $Amb->phpBib.'Facebook/autoload.php'; 
//use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
//FacebookSession::setDefaultApplication('{myAppCode}', '{myAppSecret}');
$fb = new Facebook\Facebook([
  'app_id' => '{myAppCode}',
  'app_secret' => '{myAppSecret}',
  'default_graph_version' => 'v2.3',
  ]);
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get('/me?fields=id,name', $fbToken);
  $fpPhpUser = $response->getGraphUser();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  fim("fbGraph", 'Erro Facebook Graph: ' . $e->getMessage());
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  fim("fbSDK", 'Erro Facebook SDK: ' . $e->getMessage());
  exit;
}
if($fpPhpUser){
    $Login->ativo = true;
    $Login->metodo = "fb";
    $_SESSION["Login"] = $Login;
}

我们的想法是确认用户已登录且Facebook已授权我的应用,因此' {access-token}'将通过客户端浏览器发送的http请求与其余数据一起发送(例如:用户注册表单在我的网站数据库中进行修改)。 $ Login-> ativo == TRUE表示我可以安全地执行数据库查询。 (用户也可以通过我自己的网站登录系统登录,但我希望他通过Facebook进行集成) 不确定是否会起作用并且有点厌倦尝试......这是正确的方法吗?

0 个答案:

没有答案