看起来,即使您拥有publish_actions权限,access_token仍会在几个小时后过期。如果publish_actions的目标是能够在后台为用户执行操作而无需一遍又一遍地请求权限,那么我们如何在没有用户输入的情况下续订令牌?
我也在这里阅读:https://developers.facebook.com/docs/beta/opengraph/actions/:
Note - Apps can also use an App Access Token to publish actions for authenticated users.
但这对我也不起作用,我得到:
{"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthException"}}
修改
应用访问令牌确实有效,但在API网址中,您必须将“我”更改为用户的ID(例如https://graph.facebook.com/me
=&gt; https://graph.facebook.com/<some user id>
)
答案 0 :(得分:1)
极少数情况下您需要offline_access权限。
要发布OG操作,用户必须出现在您的应用中。当他们不在场并在您的应用中执行操作时,您不得代表他们发布操作。
因此,您可以使用JS SDK来保持用户令牌的新鲜感。只需在每个页面上异步运行FB.getLoginStatus(),只要用户已经为您的应用程序授权并登录Facebook,它就会确保您始终拥有有效的访问令牌。
答案 1 :(得分:0)
听起来你找到了答案:)。如果您确实想要使用用户令牌而不是应用令牌,则可以请求offline_access权限(生成非过期用户令牌),尽管我建议尽可能使用应用令牌。