尝试此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>
答案 0 :(得分:1)
您正在使用App Token。您真正需要的是User Access Token。
搜索API文档说:
- 跨页面和地点对象搜索需要应用访问令牌。
- 所有其他端点都需要用户访问令牌。
由于您正在搜索某个事件,因此您需要一个用户访问令牌。您可以找到有关生成用户访问令牌here的更多详细信息。
要测试您的查询,您可以使用Graph API Explorer。默认情况下,它为您提供用户访问令牌以测试您的查询。
答案 1 :(得分:0)
如上所述的错误消息,提供的访问令牌无效。如果您提供访问令牌,则该令牌必须有效。否则你会收到错误。如果您想要读取没有任何令牌的公共数据,请完全保留访问令牌。
访问令牌仅在有限的时间段内有效。它们会在一段时间后过期,可能是几天或几小时。如果过期,您需要检查并要求新的访问令牌。通常,您会在此处获得不同的特定错误代码。
拥有您想要访问的数据的用户必须首先授予您对应用的访问权限。这就是你通过OAauth检索访问令牌的方式。撤销此授权后,您的访问令牌将失效。用户可以在没有通知的情况下随时执行此操作,只需使用上述错误消息即可。
结论:你需要深入研究并进一步调查实际发生的事情: