如何使用OAb 2.0使用fb_exchange_token增加访问令牌到期时间

时间:2012-02-10 01:32:55

标签: php javascript facebook facebook-access-token

我正在使用FB.login在我的网站上登录Facebook,但它确实有效。

我可以轻松地使用response.AuthResponse.accessToken获取accessToken。

会话有效期为2小时。我从我读到的内容中了解到,使用fb_exchange_token,你可以将它延长到30天或60天(我不确定哪个,我看到了两个数字)。

问题1:这在Javascript中是否可行?我是否需要提供应用程序机密(我不想在Javascript中执行此操作,因为每个人都可以访问它)?有人可以提供一个代码片段吗?

我的计划是使用ajax将新获得的扩展令牌发送到PHP,然后将其用于我正在进行的PHP FQL调用。目前我在做:

$facebook = new Facebook(array('appId' => $app_id,'secret' => $app_secret));

$fql = 'SELECT first_name, last_name, movies, tv, FROM user WHERE uid =' . $uid;

$param = array('method' => 'fql.query','query' => $fql,'callback' => '');

$fqlResult = $facebook->api($param);

问题2:这可能是一个新手问题,但如何在上面的PHP代码中使用ajax发送的新访问令牌?目前,我没有明确使用访问令牌,一切正常(直到2小时到期)。

先谢谢你的帮助,

吉斯

1 个答案:

答案 0 :(得分:1)

当您从Facebook访问令牌时,您应该将其发送回服务器,然后您可以将其扩展到那里,而不必担心暴露您的应用密钥和秘密。

在服务器上拥有访问令牌后,您可以使用以下方法将其添加到Facebook库中。

$facebook->setAccessToken($access_token)

您所做的任何api调用都将以登录用户身份执行。