有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从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) 个答案

  1. # 1 楼答案

    要搜索页面,您需要根据Facebook文档将应用访问令牌与您的请求一起传递:

    https://developers.facebook.com/docs/graph-api/using-graph-api/v2.0#search

    Searches across Page and Place objects requires an app access token.

    你可以用

    {app_id}|{app_secret}
    

    为此

    顺便说一句,你最初的问题“找到所有来自X城市的人,他们都喜欢Y”将不起作用,因为你无法从FB查询此类信息