我正在寻找一些与我非常相似的问题,但仍然在这里丢失了。我对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进行集成) 不确定是否会起作用并且有点厌倦尝试......这是正确的方法吗?