进行Facebook查询时OAuthException

时间:2014-01-21 15:19:34

标签: facebook facebook-graph-api

尝试此URL时出现以下错误(只需在浏览器中粘贴它以检查输出):

https://graph.facebook.com/search?q=London&type=event&access_token=ACCESS_TOKEN

{    "error": {
      "message": "(#200) Must have a valid access_token to access this endpoint",
      "type": "OAuthException",
      "code": 200
    }
}

我按照this guide获得ACCESS_TOKEN。我做错了什么?


解决方案

感谢Rahil Arora提示。以下是我打印出访问令牌的方法:

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

<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>

2 个答案:

答案 0 :(得分:1)

您正在使用App Token。您真正需要的是User Access Token

搜索API文档说:

  
      
  • 跨页面和地点对象搜索需要应用访问令牌。
  •   
  • 所有其他端点都需要用户访问令牌。
  •   

由于您正在搜索某个事件,因此您需要一个用户访问令牌。您可以找到有关生成用户访问令牌here的更多详细信息。

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

答案 1 :(得分:0)

如上所述的错误消息,提供的访问令牌无效。如果您提供访问令牌,则该令牌必须有效。否则你会收到错误。如果您想要读取没有任何令牌的公共数据,请完全保留访问令牌。

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

拥有您想要访问的数据的用户必须首先授予您对应用的访问权限。这就是你通过OAauth检索访问令牌的方式。撤销此授权后,您的访问令牌将失效。用户可以在没有通知的情况下随时执行此操作,只需使用上述错误消息即可。

结论:你需要深入研究并进一步调查实际发生的事情:

  1. 您实际上有一个无效(永不有效)令牌
  2. 您的令牌有效但已被撤销
  3. ...