在我的Facebook应用中,我正在使用Javascript SDK登录用户。 如果没问题,我将他重定向到这个PHP页面(旨在说明我的问题):
test.php的:
<?php
include('config.php');
require('phpsdk.php');
$access_token = $facebook->getAccessToken();
echo $access_token;
echo "<br /><br />";
$user = $facebook->getUser();
echo $user;
?>
(phpsdk.php handels PHP SDK启动)
第一次访问test.php,返回有效的访问令牌和已登录用户的ID。 但是,当我刷新页面时,访问令牌变为appID|appSecret类型。 用户仍然登录:getUser仍然返回正确的用户ID。
任何人都知道造成这种情况的原因是什么?
答案 0 :(得分:1)
当用户退出时,使用php sdk在重定向中清除Facebook会话。
Logout.php重定向用户并使用sdk清除会话数据。
示例重定向网址。 yourdomain.com/Logout.php?destroy=true
请参阅:https://developers.facebook.com/docs/reference/php/facebook-destroySession/
<?php
session_start();
require './src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'appID',
'secret' => 'appSecret',
'cookie' => true, // enable optional cookie support
));
if(isset($_GET['destroy'])){
$facebook->destroySession();
}
?>
答案 1 :(得分:0)
建议不要一遍又一遍地调用getAccessToken();
。
您应首先尝试查看令牌是否在浏览器中作为会话,如果不是,则尝试使用SDK
查找或请求它。
<?php
session_start();
include('config.php');
require('phpsdk.php');
// need to replace Your_App_ID and YourAppId with your applications id.
$facebook = new Facebook(array(
'appId' => 'Your_App_ID',
'secret' => 'Your_App_Secret',
'cookie' => true, // enable optional cookie support
));
if(isset($_SESSION['fb_YourAppId_user_id'])){
$user = $_SESSION['fb_YourAppId_user_id'];
}else{
$user = $facebook->getUser();
}
if($user){
if(isset($_SESSION['fb_YourAppId_access_token'])){
$access_token = $_SESSION['fb_YourAppId_access_token'];
}else{
$access_token = $facebook->getAccessToken();
}
}
echo $user;
echo "<br /><br />";
echo $access_token;
?>