4

我能够获得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: 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来完成此操作。

我错过了什么可以续订过期吗?

回答

1

我认为页面管理员用户将不得不在60天内回到​​您的应用程序,以获得一个新的访问令牌,并在其上延长时间。我不认为你可以(或应该)只允许应用程序扩展访问令牌。

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

注意:你能得到 一个有效的“授权码”,以能够再次使服务器端OAuth 呼叫之前,用户必须访问应用程序。应用程序将无法设置 试图自动延长到期时间的背景/ cron作业,因为 “授权码”是短暂的并且已过期。

+0

但是,包含使用该应用程序?用户是否简单地在Facebook上的任何标签上使用它,然后自动扩展令牌?或者我需要再次将它们发送到oauth对话框? – 2012-02-07 14:59:18

+0

当用户回到应用程序时,他们不需要获取oauth对话框(根据你如何进行oauth,它可能会瞬间弹出),但除了以某种方式进行交互之外,用户不需要执行任何操作与您的应用程序,导致您的代码去抓取用户访问令牌。检查失效日期,如果不是60天,则直接通过流程进行扩展。 – DMCS 2012-02-07 15:51:29

+0

仍然没有完全想到,但似乎你是正确的用户需要采取行动来扩展令牌。 Facebook可能正在读取一些会话变量以确保用户当前已登录。 – 2012-02-24 16:49:08

0

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