Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook不赞成离线访问,有什么办法吗?_Php_Facebook_Facebook Graph Api - Fatal编程技术网

Php Facebook不赞成离线访问,有什么办法吗?

Php Facebook不赞成离线访问,有什么办法吗?,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我有一个php音乐网站。我可以让用户通过facebook进行身份验证,并通过hybridauth库登录到我的网站 现在我想要的是,每次用户听一首歌,我都会用歌曲链接更新他的状态。 现在Facebook正在取消对离线访问的支持,或者这不需要离线访问权限,这能实现吗 我是facebook api的新手。我不完全理解您的情况,但如果用户在您希望在其墙上发布的时候使用您的应用程序,那么您就不会有任何问题,您也不需要“离线访问”或任何等效功能 您只需将加载到页面,这将确保用户已通过身份验证,并且您拥有有效

我有一个php音乐网站。我可以让用户通过facebook进行身份验证,并通过hybridauth库登录到我的网站

现在我想要的是,每次用户听一首歌,我都会用歌曲链接更新他的状态。 现在Facebook正在取消对离线访问的支持,或者这不需要离线访问权限,这能实现吗


我是facebook api的新手。

我不完全理解您的情况,但如果用户在您希望在其墙上发布的时候使用您的应用程序,那么您就不会有任何问题,您也不需要“离线访问”或任何等效功能

您只需将加载到页面,这将确保用户已通过身份验证,并且您拥有有效的访问令牌,如auth文档中所述:

使用Javascript SDK实现身份验证的桌面Web和移动Web应用程序

调用FB.getLoginStatus()或确保在 call FB.init()表示用户下次登陆您的 应用程序,并登录到Facebook,即您要创建的authResponse对象 作为这些调用的结果传递的将包含一个新的、有效的 访问令牌

在这种情况下,这只是用户使用应用程序的行为 隐式生成一个新的访问令牌


编辑 如果您使用服务器端身份验证流,或者使用facebook提供的新端点来扩展有效访问令牌(使用客户端流获得),您可以获得相当长的访问令牌(大约60天),如本文所述

如果这对您有帮助,那就好了,但我建议您只需确保您的应用程序能够处理令牌过期,因为您无法完全避免这种情况

怎么做?嗯,您有几个选择,您需要找到一个适合您特定场景的选择,但这里有一个选择: 首先,在我看来,您必须在客户端执行一些操作,因为当用户在收听歌曲时,令牌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


当然,您可以使用其他方法,也可以订阅其他事件,只需阅读文档并尝试您的选项。

用户进行身份验证,并在应用程序中。他在播放器中加载了一首歌曲,我想通过php而不是javascript发布该事件。播放器是否在您的应用程序中?当用户在播放器中加载歌曲时,应用程序中是否会发生这种情况?如果是这样,那么您就可以拥有JSSDK,并使用它获得一个活动的、有效的访问令牌(如文档中所述)。然后你可以使用php、js、flash、java和erlang发布它,这并不重要,只要你有一个有效的访问令牌。是的,我的应用程序在web中,播放器也在其中。你能举个例子吗?用例子和更多解释编辑了我的答案