5

ユーザーが初めて Facebook アプリを含む私のサイトにアクセスすると、それを許可する必要があり、許可するように促され、access_token に変換できるコードを取得します。ここまでは順調ですね。

しかし、ユーザーが既にサイトにアクセスした後、どうすればトークンを取得できますか? このトークン フォームが最初にアクティブである限り、すべて問題ありません。しかし、ユーザーが 1 週間前に既にアプリを許可していて、再び私のページにアクセスしただけの場合、別のトークンを取得するにはどうすればよいでしょうか?

4

5 に答える 5

3

クライアント側のフローでは、スコープ パラメーターのアクセス許可を使用して、ユーザーを OAuth ダイアログにリダイレクトできます。ユーザーがアプリとアクセス許可を既に受け入れている場合、URI フラグメントに access_token を使用して「redirect_uri」にリダイレクトされます。それ以外の場合は、必要なアクセス許可がプロンプトで表示されます。

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream&response_type=token

サーバー側のフローでは、OAuth エンドポイントで access_token と交換できるように「コード」が必要です。

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URLclient_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE

ドキュメント: https://developers.facebook.com/docs/authentication/

于 2011-08-31T13:03:31.617 に答える
0

これを使用することもできます:

$access_token = $facebook->getAccessToken();

https://developers.facebook.com/docs/reference/php/facebook-getAccessToken/

于 2012-07-02T15:15:15.980 に答える
0

Cookie メソッドを使用して、ユーザーのコンピューターに access_token を保存します。

FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});

facebook.php ファイルで、cookieSupport を true に設定する必要があります。

private $cookieSupport = true;

または、ここにある get_facebook_cookie 関数を使用します: JavaScript SDK を使用したシングル サインオン

次に、access_token は「fbs_APPID」という名前の Cookie に保存されます (有効期限付き)。Cookie を数時間以上持続させたい場合は、拡張アクセス許可「offline_access」を要求する必要があります。

アプリケーションがいつでもユーザーに代わって承認されたリクエストを実行できるようにします。デフォルトでは、アプリケーションがアクティブにアプリケーションを使用している場合にのみアプリケーションがユーザーに代わってリクエストを行うようにするために、ほとんどのアクセス トークンは短期間で失効します。このアクセス許可により、OAuth エンドポイントから返されたアクセス トークンの有効期間が長くなります。

于 2010-04-30T09:58:50.800 に答える
-2

PHPを使用する

session_start();
// Create our Application instance.
$facebook = new Facebook(array(
                'appId' => FACEBOOK_APP_ID,
                'secret' => FACEBOOK_APP_SECRET,
                'cookie' => true,
                'domain' => 'example.com'

));

$session = $facebook->getSession();

$me = null;
// Session based API call.
if ($session) {
    try {
        $uid = $facebook->getUser();
        $me = $facebook->api('/me');
        $_SESSION['me'] = $me;
        $_SESSION['uid'] = $uid;
        $_SESSION['session'] = $session;

    } catch (FacebookApiException $e) {
        error_log($e);
    }
}

アプリ内の$_SESSION['session'] ['access_token']を介してaccess_tokenを参照できます。詳細については、fbdevtutorials.comのチュートリアルをご覧ください。

于 2010-05-10T12:29:20.717 に答える