3

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 は PHP SDK の開始を処理します)

test.php に最初にアクセスすると、有効なアクセス トークンとログインしているユーザーの ID が返されます。ただし、ページを更新すると、アクセス トークンのタイプはappID|appSecretになります。ユーザーはまだログインしています: getUser はまだ正しいユーザー ID を返します。

誰がこれを引き起こしているのか知っていますか?

4

2 に答える 2

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 に答える