【问题标题】:facebook extending the access tokenfacebook 扩展访问令牌
【发布时间】:2012-06-10 11:05:33
【问题描述】:

您好,我在这里看到了答案 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 才能再次获取详细信息,但您似乎无法使用 file_get_contents,因为 facebook 需要您机器上的 cookie。我正在尝试即时执行此操作,以免通过任何弹出窗口打扰用户,而且他们已经授予应用权限。

有什么想法吗? 理查德

哦,只是这样做似乎也不起作用。

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

【问题讨论】:

  • 不能扩展无效的token,只有有效的token可以扩展
  • 很有趣,那么如何扩展一个有效的?以及它们如何变得无效
  • 短期访问令牌的有效期为一到两个小时,之后它们就会过期,您必须获得一个新的。

标签: facebook oauth facebook-access-token extending


【解决方案1】:

试试这个代码

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

【讨论】:

  • 干杯 - 基本上是使用我在 facebook 上设置的 cookie 来获取新的访问令牌。所以如果我没有那个 cookie 那么它就不会得到一个新的令牌?
  • 如果你将cookie设置为false,那么你也可以获得新的token。
【解决方案2】:

根据Removal of offline_access permission

场景 4:客户端 OAuth 和通过新端点延长 Access_Token 过期时间

使用下面的新端点,您将能够扩展 现有、未过期、短期用户的过期时间 access_token。请注意,端点只能用于扩展 短期用户 access_tokens。如果您传递一个具有 长寿命到期时间,端点将简单地通过相同的 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-03-30
    • 2012-02-29
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2012-06-22
    相关资源
    最近更新 更多