Your SlideShare is downloading. ×
Facebook4Jで近づくJavaとFacebook Graph API #ccc_r56 #jjug_ccc JJUG CCC 2013 Spring
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

3,471

Published on

0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,471
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
11
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×