SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Downloaden Sie, um offline zu lesen
Facebook4J で近づく
JavaとFacebook Graph API
山下 竜司 @roundrop
#ccc_r56
自己紹介
● 山下 竜司 @roundrop
● http://blog.roundrop.jp
● (株)アットウェア
● Java, PHP, Javascript, …
● Facebook4J ... http://facebook4j.org
● textrans ... http://textrans.roundrop.jp
アジェンダ
●Facebook4J について
●はじめてのオープンソースを開発・リリースに
あたってやったこと・考えたことなど
Facebook Graph API
たたいたことありますか?
Facebook Graph API
Java で
たたいたことありますか?
Facebook Graph API
Application Graph API Facebook
Response: JSON
{
"id": "100003403570846",
"name": "安倍晋三",
"first_name": "晋三",
"last_name": "安倍",
"link":
"https://www.facebook.com/abeshinzo",
"username": "abeshinzo",
:
ラッパーライブラリ
https://graph.facebook.com
/abeshinzo
Facebook Graph API がたたける
Java ライブラリ
●facebook4j (Google Code)
●https://code.google.com/p/facebook4j/
_人人人人人_
> 空っぽ <
 ̄Y^Y^Y^Y ̄
Facebook Graph API がたたける
Java ライブラリ
●facebook-java-api
●https://code.google.com/p/facebook-java-api/
_人人人人人人人_
>  しんでる  <
 ̄Y^Y^Y^Y^Y^ ̄
Facebook Graph API がたたける
Java ライブラリ
●RestFB
●http://restfb.com/
ようやくまともな感じ!
でも・・・
(おまえら) Javaプログラマは
Twitter4Jに慣れすぎている
→ RestFB、OAuth サポートないの?
→ RestFB、使い勝手がしっくりこないんだけど?
→ RestFB、なんか違う
https://twitter.com/vvakame/status/240294658473852928
https://twitter.com/yusuke/status/240730650955628545
Facebook4J リリース
●ソースコード
●https://github.com/roundrop/facebook4j
●公式サイト
●http://facebook4j.org
Facebook4J の特徴
Twitter4J ライクな使い勝手
●Facebookインターフェイス
→ メソッド呼び出し のシンプル構造
Facebook facebook = new FacebookFactory().getInstance();
facebook.postStatusMessage("Hello World from Facebook4J.");
ちなみにTwitter4Jだと
Twitter twitter = new TwitterFactory().getInstance();
twitter.updateStatus("Hello World from Twitter4J.");
Twitter4J ライクな使い勝手
●APIの1つ1つをすべてメソッドで提供
●タイプセーフ
●例) 自身のユーザー情報を取得
User user = facebook.getMe();
RestFB の場合
User user = facebookClient.fetchObject("me", User.class);
文字列! 自分で指定!
Twitter4J ライクな使い勝手
●例) ポストした投稿を3件取得
ResponseList<Post> posts
= facebook.getFeed(new Reading().limit(3));
RestFB の場合
Connection<Post> posts =
facebookClient.fetchConnection("me/feed", Post.class,
Parameter.with("limit", 3));
! !!
!!!
OAuth サポート
Facebook facebook = new FacebookFactory().getInstance();
response.sendRedirect(
facebook.getOAuthAuthorizationURL(callbackURL)
);
String oauthCode = request.getParameter("code");
AccessToken accessToken =
facebook.getOAuthAccessToken(oauthCode);
OAuth サポート
●サンプルコード
https://github.com/roundrop
/facebook4j-oauth-example
多くのサポートAPI
●Account
●Activity
●Album
●Checkin
●Comment
●Domain
●Event
●Family
●Favorite
サポート
●Friend
●Game
●Group
●Insight
●Like
●Link
●Location
●Message
●Note
●Notification
●Permission
●Photo
●Poke
●Post
●Question
●Subscribe
●User
●Video
●TestUser
●FQL
●Search
未サポート
●Page (1.2対応予定)
●Application
●Ads API
●Real-time Updates
●Field Expansion
●Open Graph API
メッセージ投稿
facebook.postStatusMessage("hoge");
シェアする
PostUpdate post
= new PostUpdate(new URL("http://facebook4j.org"))
.picture(new URL("http://~/image.png"))
.name("Facebook4J")
.caption("facebook4j.org")
.description("Facebook4J is ...");
facebook.postFeed(post);
ニュースフィードを取得する
ResponseList<Post> feed
= facebook.getHome();
いいね!
●Facebook.like****() **** = Post, Photo, Video...
facebook.likePost(postId);
●Facebook.unlike****() **** = Post, Photo, Video...
facebook.unlikePost(postId);
コメントする
●Facebook.comment****() **** = Post, Photo, Video...
facebook.commentPhoto(photoId,
"Nice photo!");
検索する
●Facebook.search****() **** = Posts, Users, Events...
ResponseList<Post> posts
= facebook.searchPosts("facebook");
ResponseList<User> users
= facebook.searchUsers("john");
:
FQL
JSONArray results
= facebook.executeFQL("SELECT ...");
Map<String, String> queries = new ...
queries.put("query1", "SELECT ...");
queries.put("query2", "SELECT ...");
Map<String, JSONArray> result
= facebook.executeMultiFQL(queries);
絞り込みなど
●特定の項目のみ取得する
// ユーザーのメールアドレスのみ取得
User user = facebook.getUser(userId,
new Reading().fields("email"));
●limit/offset
// 11件目~20件目を取得
ResponseList<Post> results
= facebook.searchPosts("facebook",
new Reading().limit(10).offset(10));
多くのサポートAPI
●Account
●Activity
●Album
●Checkin
●Comment
●Domain
●Event
●Family
●Favorite
サポート
●Friend
●Game
●Group
●Insight
●Like
●Link
●Location
●Message
●Note
●Notification
●Permission
●Photo
●Poke
●Post
●Question
●Subscribe
●User
●Video
●TestUser
●FQL
●Search
未サポート
●Page (1.2対応予定)
●Application
●Ads API
●Real-time Updates
●Field Expansion
●Open Graph API
その他
●最適化はしていないが
●Android
●Google App Engine
でも動作するらしい
Facebook4J
Getting Started
1. Facebook上でAppをつくる
●https://developers.facebook.com/apps
●適当にAppをつくりApp IDとApp Secretを取得
2. Facebook4J の jar を配置
●Maven プロジェクト
●pom.xml に以下を記述
<dependency>
<groupId>org.facebook4j</groupId>
<artifactId>facebook4j-core</artifactId>
<version>1.1.5</version>
</dependency>
●非Maven プロジェクト
●http://facebook4j.org/download/facebook4j-core-1.1.5.jar
3. facebook4j.properties を配置
●facebook4j.properties
●以下のように記述
debug=true
oauth.appId=****************
oauth.appSecret=*************************
oauth.accessToken=***************************
※アクセストークンは
https://developers.facebook.com/tools/explorer
から取得するのがラク
 パーミッションには全部チェックをつける感じで
●クラスパスに配置
4. Facebook4J を使う
●使ってみる
●適当にclassをつくり以下のように実装
public class F4JGettingStarted {
public static void main(String... args) {
Facebook facebook = new FacebookFactory().getInstance();
User me = facebook.getMe();
System.out.println(me);
}
}
Facebook4J の今後
採用実績
●株なび
●https://kabu-navi.jp
●ドイツで使われてる?
●イタリアのSNSで使われる予定らしい
facebook4j.org アクセス状況
●日本、インド、アメリカ・・・
●直近1ヶ月だと日本よりインドからが多い
●ヨーロッパからのフィードバックが多い
もっと日本で使われてほしい!
ロードマップ
●現在 ver 1.1.5
●バクフィックス中心
●ver 1.2.0
●ブランチで開発中
●主にFacebook Page系API追加
●Android最適化はやくやりたい
●jarの軽量化
●シングルサインオン
はじめてのオープンソースを
開発・リリースにあたって
やったこと・考えたことなど
開発の動機
●仕事でFacebook連携する機会があった
●何かこれつくってますってのがほしかった
●○○4J
●お手本があったのでできる気がした
●Twitter4J とか
●Twitter4J とか
自分でも
オープンソースがつくれるか?
●全く新しいものを創造
●なかなかむつかしい
●難しくないがメンドウなもの
●Facebook4J はこっち
●あまり高スキルでなくてもこれならできる!
ソースコードの流用って
やっていいの?
●ライセンス的にOKなの?
●Apache License 2.0 なら、まるっとコピーして
package変えるだけな使用方法もOK
(※当然著作権表示等は残したままで)
●ちょこっと変えて使いたい
●コピーライトはそのままに、Javadocに変更点を書
く
Javadocは日本語?英語?
●世界を狙うなら英語
●そうじゃないなら日本語
コミットログは日本語?英語?
●世界を狙うなら英語
●そうじゃないなら日本語
英語力ないんだけど?
●辞書・翻訳サイトを使えば、なんとかなる
●辞書・翻訳サイトを使えば、文字でのコミュニ
ケーションもなんとかいける
Mavenセントラルへの登録
どうやってやるの?
●http://samuraism.jp/diary/2012/05/03/13
36047480000.html
活用したツール
●BitBucket のプライベートリポジトリ
●無料
●リリースまではBitBucketでソース管理
●初回リリース時にGitHubへ移した
●Dropbox
●.gitignoreしているファイル
●IDEの設定ファイル
→どこでも同じ環境で作業できるように
公式サイトづくり
●GitHub Pages
●GitHubの静的ファイルホスティング
●公式サイト facebook4j.org をホスティング
●Jekyll (https://github.com/mojombo/jekyll)
でダイナミックなサイトも構築可能
●レイアウト
●条件分岐 等
●https://github.com/roundrop/facebook4j.org
さあ、帰ったら
Facebook4J
使おう!
Facebook4J
いつ使うの?
ありがとうございました
facebook4j.org

Weitere ähnliche Inhalte

Ähnlich wie Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring

Cakephp plugin for_facebook
Cakephp plugin for_facebookCakephp plugin for_facebook
Cakephp plugin for_facebookEiji Yokota
 
Ojag naha vol13
Ojag naha vol13Ojag naha vol13
Ojag naha vol13Seiei Higa
 
Ojag naha vol13
Ojag naha vol13Ojag naha vol13
Ojag naha vol13hanachin
 
アプリ制作マスターへの道
アプリ制作マスターへの道アプリ制作マスターへの道
アプリ制作マスターへの道Masayuki KaToH
 
Tokyowebmining5 yokkuns
Tokyowebmining5 yokkunsTokyowebmining5 yokkuns
Tokyowebmining5 yokkunsYohei Sato
 

Ähnlich wie Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring (6)

MA9特別企画ハッカソン キーノート
MA9特別企画ハッカソン キーノートMA9特別企画ハッカソン キーノート
MA9特別企画ハッカソン キーノート
 
Cakephp plugin for_facebook
Cakephp plugin for_facebookCakephp plugin for_facebook
Cakephp plugin for_facebook
 
Ojag naha vol13
Ojag naha vol13Ojag naha vol13
Ojag naha vol13
 
Ojag naha vol13
Ojag naha vol13Ojag naha vol13
Ojag naha vol13
 
アプリ制作マスターへの道
アプリ制作マスターへの道アプリ制作マスターへの道
アプリ制作マスターへの道
 
Tokyowebmining5 yokkuns
Tokyowebmining5 yokkunsTokyowebmining5 yokkuns
Tokyowebmining5 yokkuns
 

Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring