0

我需要在离线时访问我的用户信息,并且我知道我需要使用持续60天的扩展访问令牌。我一直在看这个SO帖子How to extend access token validity since offline_access deprecation,这说明我需要在我的base_facebook.php文件中包含所述的方法,并调用该方法。使用PHP SDK在Facebook应用程序中请求扩展访问令牌的位置

但是,通过我的代码查看没有明确的请求或使用任何地方的访问令牌,所以我不确定如何请求扩展的访问令牌。这篇文章Do I need to use access token in Facebook API?解释说,使用PHP SDK,访问令牌会自动附加到api请求上,这可以解释为什么我目前从未遇到访问令牌。

所以我的问题是如何让用户在使用PHP SDK方法getExtendedAccessToken()登录时提供扩展访问令牌?

编辑:这里的一个关键点是,你似乎无法为自己的应用程序获得扩展访问令牌!我与我的测试用户之一一起尝试了这一点,它工作的很好!另一点要注意的是,访问令牌工具将仅默认显示实际开发该应用的人的访问令牌。要查看其他用户访问令牌的具体情况,您需要转到调试器部分并在其中输入访问令牌。希望这可以帮助。

回答

1

如果您没有看到任何对访问令牌的引用,它们很可能存储在会话变量中。您可以尝试在代码中添加echo "<pre>";print_r($_SESSION);exit(0);以查看会话中存储的内容。如果您从PHP SDK调用getExtendedAccessToken(),则返回的访问令牌将自动长期存在。如果您正在从PHP SDK调用getExtendedAccessToken(),则返回的访问令牌将自动长期存在。要在将它引导回您的网站之后进行检索,您可以使用getAccessToken()方法。然后,您将存储返回的值,并在稍后使用setAccessToken($ stored_token)进行调用时使用它。

希望有所帮助。

+0

感谢您的回复David!我试着提出回应会话内容的建议,你说得对 - 访问令牌存储在那里! 虽然我不太明白你在第二段中的意思。我是否应该在代码中调用getExtendedAccessToken()(在获得短期访问令牌后的某个时间),请使用此值并使用setAccessToken()方法将值存储在存储短寿命会话变量的会话变量中? – user1058210 2012-08-15 14:31:11

+0

是的,正好... – CBroe 2012-08-15 15:41:18

+0

这听起来是正确的,除了将来你甚至不需要检索短命的访问令牌。另外,虽然在调用API之前,您将*想要调用setAccessToken(),您将需要像数据库一样使用持久性存储,以便稍后可以检索令牌。会话将在一段时间后被清除,并且不会用于服务器端请求(即图形/ FQL调用) – thefreeman 2012-08-15 18:37:00

相关问题