Facebook 令牌 - 我创建了一个永不过期的令牌,但如何创建?

Facebook Tokens - I created a never-expiring token, but how?

我一直在尝试创建一个永不过期的 Facebook 令牌(最好是通过编程方式),但未能成功,然后,在没有真正尝试的情况下,我在另一个 Facebook 应用程序上成功创建了一个令牌,其中,根据

https://developers.facebook.com/tools/debug/accesstoken?version=v2.5&q={TOKEN}

永远不会过期,我无法在任何其他 Facebook 应用程序或任何其他 Facebook 令牌上复制它。

我可以通过编程方式 (PHP) 获取短期令牌(1/2 小时)并将其延长至 60 天,但理想情况下我想获得一个永不过期的令牌。

我想我不是在问我是如何做到的,但我找不到任何解释或文档,也找不到任何理由来说明为什么我能够用一个令牌实现这一目标,而其他任何令牌都不能。

它是应用程序本身在创建时的东西吗?是否真的有办法获得永不过期的令牌,即使我已经按照许多在线指南进行操作,但只能将 1/2 小时的令牌转换为 60 天?

Is there actually a way to get a never-expiring token

不,不是 真的。即使您认为是 never-expiring 令牌 也可以 过期 - f.e。如果创建它的用户更改了他们的帐户密码。

I guess I'm not asking how I managed to do it, but I can't find any explanation or documentation nor reason as to why I was able to achieve this for one token, but not any others.

没有记录,因为当您的应用程序代表个人用户配置文件时,Facebook 希望您使用 60 天令牌。他们很久以前就删除了 offline_access 权限,特别是为了让用户早已忘记的应用程序无法代表他们行事,也无法再访问他们的数据。

因此,如果您正在编写一个代表用户行事的应用程序,您真的应该使用 60 天令牌 - 对于大多数情况来说这应该足够了。


现在您在这里看到的令牌是 Facebook 如何实施扩展页面访问令牌的副作用。这些没有默认到期时间 - 但当用户作为页面管理员被删除时,它们需要失效。因此,它们在内部与用于请求页面令牌的用户令牌相关联。用户令牌失效 - 页面访问令牌与其一起失效。而这又要求用户令牌在 60 天后不会自动过期。

因此,当您扩展包含 manage_pages 权限的用户令牌时,您将获得一个具有“无限”有效期的扩展令牌。但是,同样,这只是当前实施的副作用,将来可能会发生变化。