2013-08-01 2 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 ключ У меня есть problème исключение, ошибка: java.lang. IllegalStateException: нет доступных токенов. ERROOOOOOR

ответ

4

Вы забыли установить токен доступа с помощью fac.setOAuthAccessToken("*****"). Из docs (курсив мой):

Все Graph поисковые запросы API требуют access token передается с использованием параметра access_token=<token>. Тип доступного токена, который вам нужен, зависит от типа выполняемого вами поиска.

  • Поисковые запросы через page и place объектов требуется маркер доступа приложения.
  • Все остальные конечные точки требуют токена доступа пользователя.

Вы можете создать один для себя 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 app id/secret combination не предоставляется».

В этом случае я использовал значение по умолчанию для OAuthAppId.

Смежные вопросы