Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Facebook4J で近づくJavaとFacebook Graph API山下 竜司 @roundrop#ccc_r56
自己紹介● 山下 竜司 @roundrop● http://blog.roundrop.jp● (株)アットウェア● Java, PHP, Javascript, …● Facebook4J ... http://facebook4j.org●...
アジェンダ●Facebook4J について●はじめてのオープンソースを開発・リリースにあたってやったこと・考えたことなど
Facebook Graph APIたたいたことありますか?
Facebook Graph APIJava でたたいたことありますか?
Facebook Graph APIApplication Graph API FacebookResponse: JSON{"id": "100003403570846","name": "安倍晋三","first_name": "晋三","...
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.post...
Twitter4J ライクな使い勝手●APIの1つ1つをすべてメソッドで提供●タイプセーフ●例) 自身のユーザー情報を取得User user = facebook.getMe();RestFB の場合User user = facebookCl...
Twitter4J ライクな使い勝手●例) ポストした投稿を3件取得ResponseList<Post> posts= facebook.getFeed(new Reading().limit(3));RestFB の場合Connection<...
OAuth サポートFacebook facebook = new FacebookFactory().getInstance();response.sendRedirect(facebook.getOAuthAuthorizationURL(...
OAuth サポート●サンプルコードhttps://github.com/roundrop/facebook4j-oauth-example
多くのサポートAPI●Account●Activity●Album●Checkin●Comment●Domain●Event●Family●Favoriteサポート●Friend●Game●Group●Insight●Like●Link●Loc...
メッセージ投稿facebook.postStatusMessage("hoge");
シェアするPostUpdate post= new PostUpdate(new URL("http://facebook4j.org")).picture(new URL("http://~/image.png")).name("Facebo...
ニュースフィードを取得するResponseList<Post> feed= facebook.getHome();
いいね!●Facebook.like****() **** = Post, Photo, Video...facebook.likePost(postId);●Facebook.unlike****() **** = Post, Photo, ...
コメントする●Facebook.comment****() **** = Post, Photo, Video...facebook.commentPhoto(photoId,"Nice photo!");
検索する●Facebook.search****() **** = Posts, Users, Events...ResponseList<Post> posts= facebook.searchPosts("facebook");Respon...
FQLJSONArray results= facebook.executeFQL("SELECT ...");Map<String, String> queries = new ...queries.put("query1", "SELECT...
絞り込みなど●特定の項目のみ取得する// ユーザーのメールアドレスのみ取得User user = facebook.getUser(userId,new Reading().fields("email"));●limit/offset// 11...
多くのサポートAPI●Account●Activity●Album●Checkin●Comment●Domain●Event●Family●Favoriteサポート●Friend●Game●Group●Insight●Like●Link●Loc...
その他●最適化はしていないが●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-cor...
3. facebook4j.properties を配置●facebook4j.properties●以下のように記述debug=trueoauth.appId=****************oauth.appSecret=*********...
4. Facebook4J を使う●使ってみる●適当にclassをつくり以下のように実装public class F4JGettingStarted {public static void main(String... args) {Faceb...
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は日本語?英語?●世界を狙うなら英語●そうじゃないなら日本語
コミットログは日本語?英語?●世界を狙うなら英語●そうじゃないなら日本語
英語力ないんだけど?●辞書・翻訳サイトを使えば、なんとかなる●辞書・翻訳サイトを使えば、文字でのコミュニケーションもなんとかいける
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)でダイナミックなサ...
さあ、帰ったらFacebook4J使おう!
Facebook4Jいつ使うの?
ありがとうございましたfacebook4j.org
Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring
Upcoming SlideShare
Loading in …5
×

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

5,411 views

Published on

  • Be the first to comment

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

  1. 1. Facebook4J で近づくJavaとFacebook Graph API山下 竜司 @roundrop#ccc_r56
  2. 2. 自己紹介● 山下 竜司 @roundrop● http://blog.roundrop.jp● (株)アットウェア● Java, PHP, Javascript, …● Facebook4J ... http://facebook4j.org● textrans ... http://textrans.roundrop.jp
  3. 3. アジェンダ●Facebook4J について●はじめてのオープンソースを開発・リリースにあたってやったこと・考えたことなど
  4. 4. Facebook Graph APIたたいたことありますか?
  5. 5. Facebook Graph APIJava でたたいたことありますか?
  6. 6. Facebook Graph APIApplication Graph API FacebookResponse: JSON{"id": "100003403570846","name": "安倍晋三","first_name": "晋三","last_name": "安倍","link":"https://www.facebook.com/abeshinzo","username": "abeshinzo",:ラッパーライブラリhttps://graph.facebook.com/abeshinzo
  7. 7. Facebook Graph API がたたけるJava ライブラリ●facebook4j (Google Code)●https://code.google.com/p/facebook4j/
  8. 8. _人人人人人_> 空っぽ < ̄Y^Y^Y^Y ̄
  9. 9. Facebook Graph API がたたけるJava ライブラリ●facebook-java-api●https://code.google.com/p/facebook-java-api/
  10. 10. _人人人人人人人_>  しんでる  < ̄Y^Y^Y^Y^Y^ ̄
  11. 11. Facebook Graph API がたたけるJava ライブラリ●RestFB●http://restfb.com/
  12. 12. ようやくまともな感じ!でも・・・
  13. 13. (おまえら) JavaプログラマはTwitter4Jに慣れすぎている→ RestFB、OAuth サポートないの?→ RestFB、使い勝手がしっくりこないんだけど?→ RestFB、なんか違う
  14. 14. https://twitter.com/vvakame/status/240294658473852928
  15. 15. https://twitter.com/yusuke/status/240730650955628545
  16. 16. Facebook4J リリース●ソースコード●https://github.com/roundrop/facebook4j●公式サイト●http://facebook4j.org
  17. 17. Facebook4J の特徴
  18. 18. 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.");
  19. 19. Twitter4J ライクな使い勝手●APIの1つ1つをすべてメソッドで提供●タイプセーフ●例) 自身のユーザー情報を取得User user = facebook.getMe();RestFB の場合User user = facebookClient.fetchObject("me", User.class);文字列! 自分で指定!
  20. 20. 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));! !!!!!
  21. 21. OAuth サポートFacebook facebook = new FacebookFactory().getInstance();response.sendRedirect(facebook.getOAuthAuthorizationURL(callbackURL));String oauthCode = request.getParameter("code");AccessToken accessToken =facebook.getOAuthAccessToken(oauthCode);
  22. 22. OAuth サポート●サンプルコードhttps://github.com/roundrop/facebook4j-oauth-example
  23. 23. 多くのサポート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
  24. 24. メッセージ投稿facebook.postStatusMessage("hoge");
  25. 25. シェアする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);
  26. 26. ニュースフィードを取得するResponseList<Post> feed= facebook.getHome();
  27. 27. いいね!●Facebook.like****() **** = Post, Photo, Video...facebook.likePost(postId);●Facebook.unlike****() **** = Post, Photo, Video...facebook.unlikePost(postId);
  28. 28. コメントする●Facebook.comment****() **** = Post, Photo, Video...facebook.commentPhoto(photoId,"Nice photo!");
  29. 29. 検索する●Facebook.search****() **** = Posts, Users, Events...ResponseList<Post> posts= facebook.searchPosts("facebook");ResponseList<User> users= facebook.searchUsers("john");:
  30. 30. FQLJSONArray results= facebook.executeFQL("SELECT ...");Map<String, String> queries = new ...queries.put("query1", "SELECT ...");queries.put("query2", "SELECT ...");Map<String, JSONArray> result= facebook.executeMultiFQL(queries);
  31. 31. 絞り込みなど●特定の項目のみ取得する// ユーザーのメールアドレスのみ取得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));
  32. 32. 多くのサポート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
  33. 33. その他●最適化はしていないが●Android●Google App Engineでも動作するらしい
  34. 34. Facebook4JGetting Started
  35. 35. 1. Facebook上でAppをつくる●https://developers.facebook.com/apps●適当にAppをつくりApp IDとApp Secretを取得
  36. 36. 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
  37. 37. 3. facebook4j.properties を配置●facebook4j.properties●以下のように記述debug=trueoauth.appId=****************oauth.appSecret=*************************oauth.accessToken=***************************※アクセストークンはhttps://developers.facebook.com/tools/explorerから取得するのがラク パーミッションには全部チェックをつける感じで●クラスパスに配置
  38. 38. 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);}}
  39. 39. Facebook4J の今後
  40. 40. 採用実績●株なび●https://kabu-navi.jp●ドイツで使われてる?●イタリアのSNSで使われる予定らしい
  41. 41. facebook4j.org アクセス状況●日本、インド、アメリカ・・・●直近1ヶ月だと日本よりインドからが多い●ヨーロッパからのフィードバックが多いもっと日本で使われてほしい!
  42. 42. ロードマップ●現在 ver 1.1.5●バクフィックス中心●ver 1.2.0●ブランチで開発中●主にFacebook Page系API追加●Android最適化はやくやりたい●jarの軽量化●シングルサインオン
  43. 43. はじめてのオープンソースを開発・リリースにあたってやったこと・考えたことなど
  44. 44. 開発の動機●仕事でFacebook連携する機会があった●何かこれつくってますってのがほしかった●○○4J●お手本があったのでできる気がした●Twitter4J とか●Twitter4J とか
  45. 45. 自分でもオープンソースがつくれるか?●全く新しいものを創造●なかなかむつかしい●難しくないがメンドウなもの●Facebook4J はこっち●あまり高スキルでなくてもこれならできる!
  46. 46. ソースコードの流用ってやっていいの?●ライセンス的にOKなの?●Apache License 2.0 なら、まるっとコピーしてpackage変えるだけな使用方法もOK(※当然著作権表示等は残したままで)●ちょこっと変えて使いたい●コピーライトはそのままに、Javadocに変更点を書く
  47. 47. Javadocは日本語?英語?●世界を狙うなら英語●そうじゃないなら日本語
  48. 48. コミットログは日本語?英語?●世界を狙うなら英語●そうじゃないなら日本語
  49. 49. 英語力ないんだけど?●辞書・翻訳サイトを使えば、なんとかなる●辞書・翻訳サイトを使えば、文字でのコミュニケーションもなんとかいける
  50. 50. Mavenセントラルへの登録どうやってやるの?●http://samuraism.jp/diary/2012/05/03/1336047480000.html
  51. 51. 活用したツール●BitBucket のプライベートリポジトリ●無料●リリースまではBitBucketでソース管理●初回リリース時にGitHubへ移した●Dropbox●.gitignoreしているファイル●IDEの設定ファイル→どこでも同じ環境で作業できるように
  52. 52. 公式サイトづくり●GitHub Pages●GitHubの静的ファイルホスティング●公式サイト facebook4j.org をホスティング●Jekyll (https://github.com/mojombo/jekyll)でダイナミックなサイトも構築可能●レイアウト●条件分岐 等●https://github.com/roundrop/facebook4j.org
  53. 53. さあ、帰ったらFacebook4J使おう!
  54. 54. Facebook4Jいつ使うの?
  55. 55. ありがとうございましたfacebook4j.org

×