我通过Facebook应用程序获取客户端事件。他们启动应用程序并授予我权限以便能够检索他们的活动。
每天我都会使用Facebook提供的令牌来检索他们的活动。他们不需要采取任何行动。
两个月后,我收到以下异常:验证访问令牌时出错:会话已在unix时间1383568229过期。当前的unix时间为1383569625。
我不能要求他们再次启动应用程序;他们会认为我的应用程序存在问题。
另外,我使用类似的应用程序,使用RSS(RSS Graffiti)为我的一个页面提供信息。它从未要求我更新我的令牌,但仍然可以工作2 - 3年。
因此必须可以进行自动续订。
但到目前为止,在谷歌和stackoverflow上花了好几个小时后,我仍然没有找到解决方案。
有什么想法吗?
PS:我们谈论的是Facebook应用程序,而不是页面。
感谢。
答案 0 :(得分:5)
正如@CBroe所说,不可能自动扩展令牌的有效性(参见https://developers.facebook.com/docs/facebook-login/access-tokens/#extending)。
引文。
“即使是长期访问令牌最终也会过期。在任何时候,您都可以通过将此人员发送回您的Web应用程序使用的登录流程来生成新的长期令牌”
我建议您尝试从JSON错误消息中捕获错误代码(请参阅https://developers.facebook.com/docs/graph-api/using-graph-api/#errors),这可能是错误代码190和错误子代码463,例如向特定用户发送包含错误代码的电子邮件邀请重新访问您的应用...
答案 1 :(得分:3)
正如@Tobi所说,让您的应用变得有趣,以便您的用户返回您的应用。
我无法理解为什么用户会认为您的应用有问题?如果您的应用不需要任何用户互动,并且您的用户了解这一点,请在令牌过期之前向用户解释此问题并通知。
要通知,您可以使用Notifications API - 但请注意:
您的应用不应向过去28天内未使用该应用的用户发送通知。数据显示,该群体的参与度明显较低。他们也最有可能将您的通知报告为垃圾邮件。收到高度垃圾邮件报告的应用可能会被停用。
(参考:Best practices)