codestory

Restfb Java API für Facebook

  1. Was ist Restfb ?
  2. Restfb download
  3. Die Erstellung vom Projekt
  4. Examples

1. Was ist Restfb ?

Zuerst sieht das Facebook die Entität wie ein Social Graph. Und sie baut ein API, als "Facebook Graph API" sogenannt. API erlaut, die Information der Entität zu entnehmen und verändern, z.B die Fotos hochladen, das Komment aufschreiben, die Freundenliste nehmen... Auf der Grundlage von HTTP kann das API alle Sprache von der HTTP Bibliothek, davon Java erlauben.
Restfb ist ein Java API damit Sie mit Facebook Graph API interaktiv sein dürfen

Sie sollen zuerst sicherstellen, dass Sie Facebook Graph API gekannt haben. SIe können die Hinweisedokument über die Facebook Graph API bei ... lernen

2. Restfb download

Wenn Sie Maven benutzen:
<!-- http://mvnrepository.com/artifact/com.restfb/restfb -->

<dependency>
    <groupId>com.restfb</groupId>
    <artifactId>restfb</artifactId>
    <version>1.16.0</version>
</dependency>

3. Die Erstellung vom Projekt

Kopieren Sie ACCESS_TOKEN, die Sie auf"Facebook Graph Explorer" sehen, und kleben Sie in der Feld MY_ACCESS_TOKEN der folgende Klasse Constants auf.
Beachten Sie: ACCESS_TOKEN auf "Facebook Graph Explorer" existiert nicht lang. Es wird abgelaufen sein, dann sollen Sie wieder kopieren. In der Applikation können Sie die Wert Access_Token dynamisch bei der Runtime des Programms nehmen. Die Frage wird in dem Dokument erwähnt
Constants.java
package org.o7planning.tutorial.restfb;

public class Constants {

   public static final String REDIRECT_URI
                 = "http://localhost:8080/facebookfriends/FriendsListServlet";

  
   public static final String MY_ACCESS_TOKEN = "<Your Access Token>";

   // Facebook App
   public static final String MY_APP_ID = "<your app id>";
   public static final String MY_APP_SECRET = "<your app secret>";

}
Sie sollen ein Access Token mit vieler Recht des Datenzugang benutzen. Auf dem Facebook Graph Explorer klicken Sie auf "Get Token/Get User Access Token" und wählen Sie die Rechte, dann klicken Sie auf "Get Access Token" um ein neues Access Token mit mehreren Zuständigkeiten zu schaffen

4. Examples

Um die Daten Facebook zu zugreifen, sollen Sie das Objekt FacebookClient haben. Unten ist die Weise der Objektserstellung
// DefaultFacebookClient is the FacebookClient implementation
// that ships with RestFB. You can customize it by passing in
// custom JsonMapper and WebRequestor implementations, or simply
// write your own FacebookClient instead for maximum control.

FacebookClient facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN);

// It's also possible to create a client that can only access
// publicly-visible data - no access token required.
// Note that many of the examples below will not work unless you supply an access token!

FacebookClient publicOnlyFacebookClient = new DefaultFacebookClient();

// Get added security by using your app secret:

FacebookClient facebookClient = new DefaultFacebookClient(MY_APP_ACCESS_TOKEN, MY_APP_SECRET);
Zum Beispiel: Ihre Information entnehmen
SimpleMeExample.java
package org.o7planning.tutorial.restfb.me;

import org.o7planning.tutorial.restfb.Constants;

import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.types.User;

public class SimpleMeExample {

    public static void main(String[] args) {
        
        // Tạo đối tượng FacebookClient
        FacebookClient facebookClient= new DefaultFacebookClient(Constants.MY_ACCESS_TOKEN);
        
        // User là một class có sẵn của Restfb mô tả các thông tin của User
        // Trong tình huống này chúng ta biết trước dữ liệu trả về là User.
        User user = facebookClient.fetchObject("me", User.class);
        
        System.out.println("User="+ user);
        System.out.println("UserName= "+ user.getUsername());
        System.out.println("Birthday= "+ user.getBirthday());

    }

}
Das Ergebnis der Beispieldurchführung
Ihre Information anpassen
CustomUser.java
package org.o7planning.tutorial.restfb.me;

import com.restfb.Facebook;

public class CustomUser {

    @Facebook("first_name")
    private String firstName;

    @Facebook("last_name")
    private String lastName;

    @Facebook("name")
    private String fullName;

    @Facebook
    private String email;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}
CustomDataMeExample.java
package org.o7planning.tutorial.restfb.me;

import org.o7planning.tutorial.restfb.Constants;

import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.Parameter;

public class CustomDataMeExample {

   public static void main(String[] args) {
  
       FacebookClient facebookClient = new DefaultFacebookClient(
               Constants.MY_ACCESS_TOKEN);

       CustomUser user = facebookClient.fetchObject("me", CustomUser.class,
               Parameter.with("fields",
                       "id, name, email, first_name, last_name"));

       System.out.println("First Name= " + user.getFirstName());
       System.out.println("Last Name= " + user.getLastName());
       System.out.println("Full Name= " + user.getFullName());
       System.out.println("Email= " + user.getEmail());
   }
}
Das Ergebnis zur Durchführung des Beispiel
Das Datentyp von JsonObject
Restfb baut einige Vertretungsklasse der Daten, wie die User, Album, .. In der Praxis brauchen SIe mehr. In der Überblick ist es JsonObject. Ein Beispiel über einfaches Json liegt unten
{
 "id": "687563464611117",
 "email": "abc@yahoo.com",
 "birthday": "04/11/2000",
 "albums": {
   "data": [
     {
       "name": "Test Album",
       "type": "normal",
       "id": "726713597396700",
       "created_time": "2014-09-01T08:11:52+0000"
     },
     {
       "name": "Untitled Album",
       "type": "normal",
       "id": "726695580731835",
       "created_time": "2014-09-01T06:55:23+0000"
     }
   ]
 }
}
JsonUserDataExample.java
package org.o7planning.tutorial.restfb.me;

import org.o7planning.tutorial.restfb.Constants;

import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.Parameter;
import com.restfb.json.JsonObject;

public class JsonUserDataExample {

    public static void main(String[] args) {

        FacebookClient facebookClient = new DefaultFacebookClient(
                Constants.MY_ACCESS_TOKEN);

        //
        // Trong tình huống tổng quát, sử dụng JsonObject.
        //
        JsonObject userData = facebookClient.fetchObject("me",
                JsonObject.class, Parameter.with("fields", "name, first_name"));

        System.out.println("userData=" + userData);

        System.out.println("FirstName=" + userData.getString("first_name"));
        System.out.println("Name= " + userData.getString("name"));
    }
}
Das Ergebnis der Beispieldurchführung
Connection
Connection (Die Verbindung) - ist die Beziehung zwischen die Dinge in der Soziale Netwerk facebook. Zum Beispiel: die Beziehung zwischen des Fotos und der Komment des Fotos, die Beziehung zwischen des Benutzer und der Freunden. Manchmal ist sie Edge genannt.
Auf "Facebook Graph Explorer" sehen
Zum Beispiel: Albums
AlbumsExample.java
package org.o7planning.tutorial.restfb.connection;

import java.util.List;

import org.o7planning.tutorial.restfb.Constants;

import com.restfb.Connection;
import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.types.Album;

public class GetAlbumsExample {

   public static void main(String[] args) {
       FacebookClient facebookClient = new DefaultFacebookClient(
               Constants.MY_ACCESS_TOKEN);

       Connection<Album> albumConnection = facebookClient.fetchConnection(
               "me/albums", Album.class);
       List<Album> albums = albumConnection.getData();

       for (Album album : albums) {
           System.out.println("Album name:" + album.getName());
       }

   }
}
Das Ergebnis der Beispielsdurchführung
Zum Beispiel: Album und der Parameter
CustomGetAlbumsExample.java
package org.o7planning.tutorial.restfb.connection;

import java.util.Date;
import java.util.List;

import org.o7planning.tutorial.restfb.Constants;

import com.restfb.Connection;
import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.Parameter;
import com.restfb.types.Album;

public class CustomGetAlbumsExample {
    
    
    public static void main(String[] args) {
        FacebookClient facebookClient = new DefaultFacebookClient(
                Constants.MY_ACCESS_TOKEN);

        // 1 tuần trước.
        Date oneWeekAgo = new Date(System.currentTimeMillis() - 1000L * 60L
                * 60L * 24L * 7L);

        // Lấy ra kết nối tới các Album tạo trong khoảng 1 tuần trước.
        // Và tối đa 3 Album.
        Connection<Album> albumConnection = facebookClient.fetchConnection(
                "me/albums", Album.class, Parameter.with("limit", 3),                
                Parameter.with("since", oneWeekAgo));
        List<Album> albums = albumConnection.getData();

        for (Album album : albums) {
            System.out.println("Album name:" + album.getName());
        }

    }
}
Und das Ergebnis