2013-08-01 125 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的默認值。