codestory

Restfb Java API für Facebook

View more Tutorials:

Folge uns auf unserer fanpage, um jedes Mal benachrichtigt zu werden, wenn es neue Artikel gibt. Facebook

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);

4.1- 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

4.2- 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

4.3- 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

4.4- 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

4.5- 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

4.6- 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

View more Tutorials: