我想编写一个Java程序,它运行Facebook图形搜索查询,例如“查找来自X市的所有人,他们喜欢Y”。
目前,我想获取有关页面Y的数据。
为此,我写了以下代码:
final Facebook facebook = new FacebookFactory().getInstance();
facebook.setOAuthAppId("...", "...");
facebook.setOAuthAccessToken(new AccessToken("..."));
final AccessToken oAuthAccessToken = facebook.getOAuthAccessToken();
try {
final ResponseList<Page> pages = facebook.searchPages("Costume jewelry");
LOGGER.debug("oAuthAccessToken: " + oAuthAccessToken);
} catch (FacebookException e) {
LOGGER.error("", e);
}
运行此代码时,我遇到以下异常:
22:56:38.405 [main] DEBUG f.internal.http.HttpResponseImpl - {"error":{"message":"Invalid OAuth access token.","type":"OAuthException","code":190}}
22:56:38.481 [main] ERROR c.a.f.FbCustomerProfiler -
facebook4j.FacebookException: message - Invalid OAuth access token.
code - 190
Relevant information for error recovery can be found on the Facebook Developers Document:
https://developers.facebook.com/docs/graph-api/using-graph-api/#errors
at facebook4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:179) ~[facebook4j-core-2.1.0.jar:2.1.0]
at facebook4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65) ~[facebook4j-core-2.1.0.jar:2.1.0]
at facebook4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:93) ~[facebook4j-core-2.1.0.jar:2.1.0]
at facebook4j.FacebookImpl.get(FacebookImpl.java:2584) ~[facebook4j-core-2.1.0.jar:2.1.0]
at facebook4j.FacebookImpl.searchPages(FacebookImpl.java:2256) ~[facebook4j-core-2.1.0.jar:2.1.0]
at facebook4j.FacebookImpl.searchPages(FacebookImpl.java:2251) ~[facebook4j-core-2.1.0.jar:2.1.0]
at myproduct.FbCustomerProfiler.run(FbCustomerProfiler.java:32) [classes/:na]
at myproduct.FbCustomerProfiler.main(FbCustomerProfiler.java:20) [classes/:na]
Disconnected from the target VM, address: '127.0.0.1:50651', transport: 'socket'
我从Facebook4J网站上获取了这些示例。我的代码与他们的代码之间的唯一区别是,在我的版本中,我不会调用facebook.setOAuthPermissions(commaSeparetedPermissions);
。
因此,我认为缺少权限是导致错误的原因。
我需要什么权限才能运行查询,该查询返回有关页面的数据(最重要的是 - 我可以在下一个查询中使用的页面ID)?
答案 0 :(得分:1)
要搜索Pages,您需要根据Facebook文档传递App Access令牌:
https://developers.facebook.com/docs/graph-api/using-graph-api/v2.0#search
跨页面和放置对象进行搜索需要应用访问令牌。
您可以使用
{app_id}|{app_secret}
为此。
顺便说一下,你原来的问题“找到所有来自X市的人,谁喜欢Y”都行不通,因为你无法从FB那里查询这类信息。