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

有任何想法吗?理查德

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

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

2 回答 2

0

试试这个代码

$facebook = new Facebook(array(
    'appId'  => $this->fbApiKey,
    'secret' => $this->fbSecretKey,
    'cookie' => true,
));
$token = $facebook->getAccessToken();
于 2012-06-06T12:25:25.853 回答
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 回答