[英]Facebook deprecated offline access, any way around?
我在php中有一个音乐网站。 我可以让用户通过facebook进行身份验证,并通过hybridauth库登录到我的网站。
现在我想要的是,每当用户收听一首歌曲时,我都会通过歌曲链接更新其状态。 Facebook取消了对脱机访问的支持后,现在是否可以实现此目的?或者这是不需要脱机访问权限的东西吗?
我是Facebook API的新手。
好吧,我还不太了解您的情况,但是如果用户在您要发布在墙上的时候正在使用您的应用程序,那么您将不会有任何问题,并且不需要“ offline_access”或任何等效项..
您可以简单地将javascript SDK加载到页面上,这将确保用户已通过身份验证,并且您具有有效的访问令牌,如auth文档中处理无效和过期的访问令牌所述 :
通过Javascript SDK实现身份验证的桌面Web和移动Web应用程序
调用FB.getLoginStatus()或确保状态:在您调用FB.init()时设置为true意味着用户下次登陆您的应用程序并登录Facebook时,由于这些调用而传递了authResponse对象将包含一个新的有效访问令牌。
在这种情况下,这只是用户使用您的应用程序的行为,它隐式生成一个新的访问令牌。
如果使用服务器端身份验证流,或者使用提供的用于扩展有效访问令牌的新端点facebook(使用客户端流获取),则可以获得较长的访问令牌(约60天)。后删除offline_access权限 。
如果这对您有帮助,那么可以,但我建议您仅确保您的应用程序可以处理令牌到期,因为您无法采取任何措施来完全避免这种情况。
怎么样? 好吧,您有几个选择,您需要找到一个适合您特定情况的选择,但这是一个选择:首先,正如我所看到的,自令牌以来,您必须在客户端进行操作当用户正在聆听歌曲时,ca会过期,并且为了从服务器端获取新令牌,您必须刷新页面并将用户发送到auth对话框,这会干扰他的体验。
这是一些使用js sdk的js代码,它不是完整的代码,我不希望它能正常工作,但是它应该使您对可以做什么有所了解:
FB.Event.subscribe("auth.statusChange", function(response) {
if (response.status !== "connected") {
FB.login(function(response2) {
if (response2.authResponse) {
// you now have a valid access token, you can update your server side with an ajax request for example
}
else {
// user canceled login
}
});
}
});
另外,请注意, FB.login会尝试打开一个弹出窗口,因此不应仅在用户交互后才这样调用它,因此,与其仅调用它,还应替换为向用户显示一条消息,例如“请单击“确定”,以便能够发布到Facebook ...”,然后单击打开FB.login 。
当然,您可以使用其他方法或可以订阅的其他事件,只需阅读文档并尝试使用所拥有的选项即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.