【问题标题】:Access token expiration not getting extended访问令牌过期未延长
【发布时间】:2012-02-28 02:58:31
【问题描述】:

我可以获得有效期为 60 天的访问令牌,但无法延长到期时间。我这样做是为了能够通过单个用户访问 Facebook 页面。这是我的过程。

我打电话给: https://www.facebook.com/dialog/oauth?response_type=token&client_id=APP_ID&scope=read_stream,publish_stream,manage_pages,read_insights,create_event&redirect_uri=REDIRECT_URL

然后我使用从上面的 URL 获得的令牌调用此 URL: 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

我在周末尝试了多次,每次都得到相同的访问令牌,但过期时间没有更新。我通过访问浏览器中的 URL 来完成此操作。

我是否遗漏了什么可以续订到期时间?

【问题讨论】:

    标签: facebook authentication facebook-oauth facebook-authentication


    【解决方案1】:

    Facebook 开发人员已弃用离线访问,但您仍可以通过将您的应用 ID、应用密码和当前访问令牌传递到以下网址,将访问令牌的有效期延长至 60 天: 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

    注意:EXISTING_ACCESS_TOKEN 必须是有效的访问令牌(未过期)。

    【讨论】:

      【解决方案2】:

      我刚遇到这个问题。问题最终是在我的 FB 应用程序中禁用了“弃用离线访问”。禁用时,扩展令牌总是返回一个短暂的令牌。启用后,我可以获得长期访问令牌。

      【讨论】:

        【解决方案3】:

        我认为页面管理员用户必须在那 60 天内返回您的应用程序才能获得一个新的访问令牌,并在其上延长时间。我认为您不能(或不应该)被允许仅通过应用程序扩展访问令牌。

        见:https://developers.facebook.com/docs/offline-access-deprecation/

        注意:用户必须先访问您的应用程序,然后您才能获得 一个有效的“授权码”,能够使服务器端 oAuth 重拨。应用程序将无法设置后台/cron 作业 试图自动延长到期时间,因为 “授权码”是短暂的,将会过期。

        【讨论】:

        • 但是使用该应用程序包括什么?用户是否只是在 Facebook 上的任何选项卡上使用它,然后自动扩展令牌?还是我需要再次将它们发送到 oauth 对话框?
        • 当用户返回应用程序时,他们不需要获取 oauth 对话框(它可能会临时弹出,具体取决于您如何执行 oauth),但用户不必这样做除了以某种方式与您的应用程序交互导致您的代码获取用户访问令牌之外的任何内容。检查到期日期,如果不是 60 天,请立即完成该过程以延长期限。
        • 仍然没有完全弄清楚,但您似乎是对的,用户需要采取行动来扩展令牌。 Facebook 可能正在读取一些会话变量以确保用户当前已登录。
        猜你喜欢
        • 1970-01-01
        • 2021-01-14
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 1970-01-01
        • 2012-03-07
        • 1970-01-01
        • 2014-02-27
        相关资源
        最近更新 更多