2013-08-01 78 views
4

我使用Facebook4j获得地位与关键字Facebook4j API:搜索

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<JSONObject> 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密钥 我有一个例外probleme,错误的是: 的java.lang。 IllegalStateException:没有可用的令牌。 ERROOOOOOR

回答

4

您忘记将访问令牌设置为fac.setOAuthAccessToken("*****")。从docs(重点煤矿):

所有图形API搜索查询都需要与access_token=<token>参数传递的access token。您需要的访问令牌的类型取决于您正在执行的搜索类型。

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

您可以生成一个自己here,但请记住,这些访问令牌有一个过期时间。

8

这就是你如何在没有外部配置文件的情况下使用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的默认值。