Facebook PHP SDK:刷新时 getAccessToken 不正确



在我的Facebook应用程序上,我正在使用Javascript SDK登录用户。如果可以,我将他重定向到此PHP页面(旨在说明我的问题):

测试.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 the PHP SDK 启动)

第一次访问测试.php返回有效的访问令牌和登录用户的 ID。但是,当我刷新页面时,访问令牌变为 appID|appSecret 类型。用户仍处于登录状态:getUser 仍返回正确的用户 ID。

有人知道是什么原因造成的吗?

当用户注销时,使用 php sdk 在重定向中清除 Facebook 会话。

注销.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(); 
 }
?>

不建议按照您描述的方式一遍又一遍地调用getAccessToken();

您应该首先尝试查看令牌是否作为会话在浏览器中,如果没有,则尝试使用该SDK来查找或请求它。

  1. 检查浏览器是否有用户,如果没有用户为用户调用 sdk,如果仍然为 null 或 0 身份验证或重新授权。
  2. 如果用户,请检查浏览器是否有access_token,如果没有令牌,则调用 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;
?>

最新更新