2017-05-08 27 views
-1

こんにちは、私はFacebookのページの投稿から特定の列を取得しようとしていて、最終的にはそれらをフォーマットしてテキストファイルに出力します。これは私が今までに試したことですFacebook4jを使用して投稿を取得する

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 

import net.sf.json.JSONArray; 
import net.sf.json.JSONObject; 
import facebook4j.Facebook; 
import facebook4j.FacebookException; 
import facebook4j.FacebookFactory; 
import facebook4j.Post; 
import facebook4j.Reading; 
import facebook4j.ResponseList; 
import facebook4j.conf.Configuration; 
import facebook4j.conf.ConfigurationBuilder; 

public class fB { 

    public static void main(String[] args) throws FacebookException { 
     // Make the configuration builder 
     ConfigurationBuilder confBuilder = new ConfigurationBuilder(); 
     confBuilder.setDebugEnabled(true); 
     // Set application id, secret key and access token 
     confBuilder.setOAuthAppId(""); 
     confBuilder.setOAuthAppSecret(""); 
     confBuilder.setOAuthAccessToken(""); 


     // Set permission 
     confBuilder.setOAuthPermissions("email,publish_stream, id, name, first_name, last_name, generic"); 
     confBuilder.setUseSSL(true); 
     confBuilder.setJSONStoreEnabled(true); 


     // Create configuration object 
     Configuration configuration = confBuilder.build(); 

     // Create facebook instance 
     FacebookFactory ff = new FacebookFactory(configuration); 
     Facebook facebook = ff.getInstance(); 

     try { 
      // Get facebook posts 
      String results = getFacebookPosts(facebook); 
      //String responce = stringToJson(results); 



      // Create file and write to the file 
      File file = new File("C:\\Facebook\\test.txt"); 
      if (!file.exists()) 
      { 
       file.createNewFile(); 
      } 
       FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
       BufferedWriter bw = new BufferedWriter(fw); 
       bw.write(results); 
       bw.close(); 
       System.out.println("Writing complete"); 

      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       } 
     } 



public static String getFacebookPosts(Facebook facebook) throws FacebookException { 
    // Get posts for a particular search 
    ResponseList<Post> results = facebook.getFeed("Rebook"); 
    //System.out.println(facebook.getId()); 
    //System.out.println(facebook.getName()); 
    //System.out.println(facebook.getFeed()); 

    return results.toString(); 
    } 

public static String stringToJson(String data) 
{ // Create JSON object 
    JSONObject jsonObject = JSONObject.fromObject(data); 
    JSONArray message = (JSONArray) jsonObject.get("message"); 
    System.out.println("Message : "+message); 
    return "Done"; 
    } 

} 

これは私にすべての列を与えていますが、私はID、メッセージと作成された日付にのみ興味があります。誰でも助けてくれますか?

+0

要求しているアクセス許可のうち1つだけが実際に存在します。 APIをリクエストする際に、必要な_fields_を尋ねる必要があります。 https://developers.facebook.com/docs/graph-api/using-graph-api/#fields(どうすればfacebook4jを使って可能ですか、あなたは自分自身を見つけなければなりません。ドキュメント内にあるはずです。 ) – CBroe

答えて

1

Facebook APIから返されるデータの指定方法を指定するには、Reading classを使用する必要があります。

Reading reading = new Reading().fields("id", "created_time", "message"); 
facebook.getFeed("Rebook", reading); 

あなたがfacebook4jの公式documentationで詳細を見つけることができます。たとえば、あなたがこのように取得するフィールドを指定する読書を構築することができます。

+0

ありがとうございました。私はメモ帳には入っていません。どうすればいいですか? –

+0

ありがとうございました。私は今メモ帳に入っています。いくつかの書式設定でExcelにすることができます –

+0

CSV書込みライブラリ([Commons CSV from Apache](https://commons.apache.org/proper/commons-csv/))を使ってCSVにデータを書き込むことができますそれをExcelで開きます。 –

関連する問題