Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring
-
Upload
ryuji-yamashita -
Category
Documents
-
view
3.615 -
download
0
Transcript of Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring
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 APIJava で
たたいたことありますか?
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
でも動作するらしい
Facebook4JGetting 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=trueoauth.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/1336047480000.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