【问题标题】:How to increase access token expiry time using fb_exchange_token with OAuth 2.0如何使用带有 OAuth 2.0 的 fb_exchange_token 增加访问令牌到期时间
【发布时间】:2024-05-29 14:50:02
【问题描述】:

我正在使用 FB.login 在我的网站上登录 Facebook,它可以正常工作。

我可以通过 response.AuthResponse.accessToken 轻松获取 accessToken。

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

问题 1: 这在 Javascript 中可行吗?我是否需要提供应用程序密码(我不想在 Javascript 中这样做,因为每个人都可以访问它)?有人可以提供一个代码 sn-p 来做到这一点吗?

我的计划是使用 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 小时到期)。

提前感谢您的帮助,

雷吉斯

【问题讨论】:

    标签: php javascript facebook facebook-access-token


    【解决方案1】:

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

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

    $facebook->setAccessToken($access_token)
    

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

    【讨论】: