3

在我的 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 处理 PHP SDK 启动)

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

有谁知道这是什么原因造成的?

4

2 回答 2

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(); 
 }
?>
于 2013-11-02T18:09:53.773 回答
0

不建议getAccessToken();按照你描述的方式一遍遍调用。

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

  1. 检查浏览器是否有用户,如果没有用户为用户调用 sdk,如果仍然为 null 或 0 auth 或 reauth。
  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;
?>
于 2013-11-01T18:43:27.307 回答