OAutheException在执行facebook查询时

OAutheException在执行facebook查询时,facebook,facebook-graph-api,Facebook,Facebook Graph Api,尝试此URL时出现以下错误(仅将其粘贴到浏览器中以检查输出): 我通过以下方式获得了ACCESS\u令牌。我做错了什么 解决方案 谢谢你的提示。以下是我打印访问令牌的方式: 我把这个放在我的私人网站上。在我将FB应用程序的公共URL设置为指向该网页后,我只需点击“登录”按钮。然后出现了一个弹出窗口,允许我的应用程序访问我的个人数据,瞧!它打印出了访问令牌;) 登录FB 访问令牌: $(函数(){ FB.init({ appId:'APP-ID',//APP-ID channelUrl:“

尝试此URL时出现以下错误(仅将其粘贴到浏览器中以检查输出):

我通过以下方式获得了
ACCESS\u令牌
。我做错了什么


解决方案

谢谢你的提示。以下是我打印访问令牌的方式:

我把这个放在我的私人网站上。在我将FB应用程序的公共URL设置为指向该网页后,我只需点击“登录”按钮。然后出现了一个弹出窗口,允许我的应用程序访问我的个人数据,瞧!它打印出了访问令牌;)


登录FB
访问令牌:
$(函数(){
FB.init({
appId:'APP-ID',//APP-ID
channelUrl:“”,//通道文件
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true,//解析xfbml
真的吗
});
FB.Event.subscribe('auth.authResponseChange',函数(响应){
如果(response.status===“已连接”){
$('#token').html(response.authResponse.accessToken);
}
});
$(“#登录”)。单击(函数(e){
FB.login();
});
});
您正在使用。对于请求,您真正需要的是一个

搜索API文档说明:

  • 跨页面和位置对象的搜索需要应用程序访问令牌
  • 所有其他端点都需要用户访问令牌
由于您正在搜索事件,因此需要用户访问令牌。您可以找到有关生成用户访问令牌的更多详细信息


要测试查询,可以使用。默认情况下,它为您提供一个用户访问令牌,用于测试您的查询

如错误消息所述,提供的访问令牌无效。如果提供访问令牌,则它必须有效。否则会出现错误。如果您希望在不使用任何令牌的情况下读取公共数据,请将访问令牌完全保留

访问令牌仅在有限的时间内有效。它们在一段时间后过期,可能是几天或几小时。如果访问令牌已过期,则需要检查并请求新的访问令牌。通常你会得到一个不同的错误代码

拥有您想要访问的数据的用户必须先授予您对应用程序的访问权限。这就是通过OAauth检索访问令牌的方式。一旦他撤销此授权,您的访问令牌将无效。用户可以在没有您通知的情况下随时执行此操作,让您独自处理上述错误消息

一句话:你需要深入研究,进一步调查实际发生的事情:

  • 实际上,您有一个无效(从不有效)的令牌
  • 您的令牌有效,但已被吊销

  • 奇怪的是,我以为公共活动属于场所对象?用户访问令牌上的文档显示:
    每当应用程序调用API来读取、修改或写入特定用户的Facebook数据时,都需要这种访问令牌但我只想读取公共数据,因为所有Graph API搜索都需要访问令牌,所以您需要一个访问令牌。文档中提到了这一点。我用一个用户访问令牌(在Graph API explorer上)尝试了相同的查询,它对我来说工作得很好。@ArnabDatta你能解决这个问题吗?Rahil是正确的,你需要用户访问令牌才能实现这一点。谢谢你支持我@托比
    
    {    "error": {
          "message": "(#200) Must have a valid access_token to access this endpoint",
          "type": "OAuthException",
          "code": 200
        }
    }
    
    <html>
    <head>
        <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
        <script src="http://connect.facebook.net/en_US/all.js"></script>
    </head>
    <body>
            <button id="login">Login to FB</button>
            <p>Access token: <span id="token"></span>
            <script>
            $(function() {
    
                FB.init({
                  appId      : 'APP-ID', // App ID
                  channelUrl : '', // Channel File
                  status     : true, // check login status
                  cookie     : true, // enable cookies to allow the server to access the session
                  xfbml      : true,  // parse XFBML
                  oauth      : true
                });
    
                FB.Event.subscribe('auth.authResponseChange', function (response) {
                  if (response.status === 'connected') {
                    $('#token').html(response.authResponse.accessToken);
                  }
                });
    
                $('#login').click(function(e) {
                  FB.login();
                });
    
            });
            </script>
    </body>
    </html>