从Java访问Facebook图形API
我想写一个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,我可以在下一次查询中使用该ID)
# 1 楼答案
要搜索页面,您需要根据Facebook文档将应用访问令牌与您的请求一起传递:
https://developers.facebook.com/docs/graph-api/using-graph-api/v2.0#search
你可以用
为此
顺便说一句,你最初的问题“找到所有来自X城市的人,他们都喜欢Y”将不起作用,因为你无法从FB查询此类信息