1

こんにちは私はここで答えを見ました http://facebook.stackoverflow.com/questions/8982025/how-to-extend-access-token-validity-since-offline-access-deprecation そしてそれを試してみましたが私はそれを動作させるのに問題があります。

期限切れのトークンがありますが、明らかにそれを自動更新する方法が必要です。これは可能ですか誰かが私にいくつかのコードを滑らせることができます

現在、これを試しています

try {
$result = $facebook->api(
                '/me/permissions/',
                'get',
                array('access_token' => $token)
        );
}
catch(FacebookApiException $e) {

    echo "token invalid";
    $facebook->setAccessToken($token);
    echo $facebook->getExtendedAccessToken();
}

しかし、私はまだ得ます

token invalid{"error":{"message":"Error validating access token: Session has expired at unix time 1338858000. The current unix time is 1338985046.","type":"OAuthException","code":190,"error_subcode":463}}

どんな助けでも。ありがとうリチャード


こんにちは、あなたの助けに感謝します。私は拡張されたものを機能させることができ、もう少し理解しています-私のトークンが無効になるというフォローアップの質問があります-それではどうしますか?私はまだFacebookにログインしていて、アプリに許可を与えているので、新しいキーが必要です。

私はこれを試しました

$facebook = new Facebook(array(
                'appId'  => FACEBOOKAPPID,
                'secret' => FACEBOOKSECRET,
                'cookie' => true,
            ));

$url = $facebook->getLoginUrl(array('canvas'=>1,'fbconnent'=>1,'scope'=>'offline_access,publish_stream,email,user_about_me,user_birthday,user_website'));
file_get_contents($url);
$fb_session = $facebook->getUser();
echo $fb_session.'<br />';

$token = $facebook->getExtendedAccessToken();           
echo $token.'<br />';

詳細を再度取得するには、Facebookに「ログイン」する必要があるようですが、Facebookにはマシン上にあるCookieが必要なため、file_get_contentsを使用できないようです。私はこれをオンザフライで実行しようとしているので、ポップアップでユーザーを煩わせないようにしています。また、ユーザーはすでにアプリに許可を与えています。

何か案は?リチャード

ああ、これを行うだけでもうまくいかないようです。

$facebook = new Facebook(array(
    'appId'  => $this->fbApiKey,
    'secret' => $this->fbSecretKey,
    'cookie' => true,
));
$token = $facebook->getAccessToken();
4

2 に答える 2

0

offline_access パーミッションの削除によると:

シナリオ 4: クライアント側の OAuth と新しいエンドポイントによる Access_Token の有効期限の延長

以下の新しいエンドポイントを使用すると、有効期限が切れていない既存のユーザー access_tokenの有効期限を延長できます。エンドポイントは、有効期間が短いユーザー access_tokens を拡張するためにのみ使用できることに注意してください。有効期限が長い access_token を渡すと、エンドポイントは、有効期限を変更または延長することなく、同じ access_token を単純に返します。

長期アクセス トークンの有効期限が切れたら、新しい短期トークンを取得してから延長する必要があります。
「拡張方法」については、同じ投稿にあります。

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN
于 2012-06-06T15:18:09.960 に答える
0

このコードを試してください

$facebook = new Facebook(array(
    'appId'  => $this->fbApiKey,
    'secret' => $this->fbSecretKey,
    'cookie' => true,
));
$token = $facebook->getAccessToken();
于 2012-06-06T12:25:25.853 に答える