Facebook4j API:搜索

我正在使用Facebook4j来获取关键字的状态

facebook4j.conf.ConfigurationBuilder fac = new facebook4j.conf.ConfigurationBuilder(); fac.setDebugEnabled(true) .setOAuthAppId("******") .setOAuthAppSecret("********") .setOAuthPermissions("email,publish_stream,..."); FacebookFactory ff = new FacebookFactory(fac.build()); facebook = ff.getInstance(); new Thread(new Runnable() { @Override public void run() { try { search(); } catch (Exception e) { // TODO: handle exception System.out.println(e +" ERROOOOOOR"); }}}).start(); } //search public void search() throws Exception { ResponseList results = facebook.search("%23morocco"); System.out.println(results); for (JSONObject result : results) { System.out.println(result); } results = facebook.search("orange", new Reading().until("yesterday")); System.out.println(results); for (JSONObject result : results) { System.out.println(result); } } 

我用facebook api键替换了*我有一个例外问题,错误是:java.lang.IllegalStateException:没有令牌可用。 ERROOOOOOR

您忘记使用fac.setOAuthAccessToken("*****")设置访问令牌。 从文档 (强调我的):

所有Graph API搜索查询都需要使用 access_token=参数传入的访问令牌 。 您需要的访问令牌类型取决于您正在执行的搜索类型。

  • pageplace对象搜索需要应用程序访问令牌。
  • 所有其他端点都需要用户访问令牌

您可以在此处为自己生成一个,但请记住这些访问令牌具有到期时间。

这是你如何在没有外部配置文件的情况下使用facebook4j。 下面的代码提供了一个最小的例子。 这是我的简单演示:

 import facebook4j.Facebook; import facebook4j.FacebookException; import facebook4j.FacebookFactory; import facebook4j.auth.AccessToken; public class Facebook4JMinimalExample { /** * A simple Facebook4J client. * * * @param args * @throws FacebookException */ public static void main(String[] args) throws FacebookException { // Generate facebook instance. Facebook facebook = new FacebookFactory().getInstance(); // Use default values for oauth app id. facebook.setOAuthAppId("", ""); // Get an access token from: // https://developers.facebook.com/tools/explorer // Copy and paste it below. String accessTokenString = "PASTE_YOUR_ACCESS_TOKEN_STRING_HERE"; AccessToken at = new AccessToken(accessTokenString); // Set access token. facebook.setOAuthAccessToken(at); // We're done. // Write some stuff to your wall. facebook.postStatusMessage("Wow, it works..."); } } 

请注意,首先调用“facebook.setOAuthAppId(..)”然后设置访问令牌非常重要。 否则,您将收到IllegalStateException,说“未提供OAuth应用程序ID /秘密组合”。

在这种情况下,我刚刚使用了OAuthAppId的默认值。