第48章 Facebook


Facebook コンポーネント

Camel 2.12 以降で利用可能
Facebook コンポーネントは、Facebook4J を使用してアクセス可能なすべての Facebook API へのアクセスを提供します。これにより、メッセージを生成、コメント、写真、アルバム、ビデオ、写真、リンクなど、投稿を取得、追加、および削除できます。また、投稿、ユーザー、グループなどをポーリングできる API もサポートしています。
Facebook では、すべてのクライアントアプリケーション認証に OAuth を使用する必要があります。アカウントで camel-facebook を使用するには、https://developers.facebook.com/apps で Facebook 内に新しいアプリケーションを作成し、アプリケーションにアカウントへのアクセスを許可する必要があります。Facebook アプリケーションの id およびシークレットを使用すると、現在のユーザーを必要としない Facebook API にアクセスできます。ログインユーザーを必要とする API には、ユーザーアクセストークンが必要です。ユーザーアクセストークンの取得に関する詳細は、https://developers.facebook.com/docs/facebook-login/access-tokens/ を参照してください。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
	<dependency>
    	<groupId>org.apache.camel</groupId>
    	<artifactId>camel-facebook</artifactId>
    	<version>${camel-version}</version>
	</dependency>
Copy to Clipboard Toggle word wrap

URI 形式

facebook://[endpoint]?[options]
Copy to Clipboard Toggle word wrap

FacebookComponent

facebook コンポーネントは、以下の Facebook アカウント設定を使用して設定できますが、これは必須となります。org.apache.camel.component.facebook.config.FacebookConfiguration タイプの Bean プロパティー 設定 を使用して、値をコンポーネントに提供できます。oAuthAccessToken オプションは省略できますが、アプリケーション API へのアクセスのみを許可します。
これらのオプションは、エンドポイント URI で直接設定することもできます。
Expand
オプション 説明
oAuthAppId アプリケーション ID
oAuthAppSecret アプリケーションシークレット
oAuthAccessToken ユーザーアクセストークン
上記の設定に加えて、以下の必須ではないオプションを使用して、コンポーネントの 設定プロパティーまたはエンドポイント URI のいずれかを使用して、基礎となる Facebook4J ランタイムを設定 できます。
Expand
オプション 説明 デフォルト値
oAuthAuthorizationURL OAuth 認証 URL https://www.facebook.com/dialog/oauth
oAuthPermissions デフォルトの OAuth パーミッション。コンマ区切りのパーミッション名。詳細は、https://developers.facebook.com/docs/reference/login/#permissions を参照してください。 null
oAuthAccessTokenURL OAuth アクセストークンの URL https://graph.facebook.com/oauth/access_token
debugEnabled デバッジ出力を有効にします。組み込みロガーでのみ有効 false
gzipEnabled Facebook GZIP エンコーディングの使用 true
httpConnectionTimeout HTTP 接続のタイムアウト(ミリ秒単位) 20000
httpDefaultMaxPerRoute ルートごとの HTTP 最大接続数 2
httpMaxTotalConnections HTTP 最大合計接続数 20
httpProxyHost HTTP プロキシーサーバーのホスト名 null
httpProxyPassword HTTP プロキシーサーバーのパスワード null
httpProxyPort HTTP プロキシーサーバーポート null
httpProxyUser HTTP プロキシーサーバーのユーザー名 null
httpReadTimeout HTTP の読み取りタイムアウト(ミリ秒単位) 120000
httpRetryCount HTTP の再試行回数 0
httpRetryIntervalSeconds HTTP 再試行の間隔(秒単位) 5
httpStreamingReadTimeout HTTP ストリーミングの読み取りタイムアウト(ミリ秒単位) 40000
jsonStoreEnabled true に設定すると、生の JSON フォームは DataObjectFactory に保存されます。 false
mbeanEnabled true に設定すると、Facebook4J mbean が登録されます。 false
prettyDebugEnabled true に設定されている場合に JSON デバッグ出力を事前送信 false
restBaseURL API ベース URL https://graph.facebook.com/
useSSL SSL の使用 true
videoBaseURL ビデオ API ベース URL https://graph-video.facebook.com/
clientURL Facebook4J API クライアント URL http://facebook4j.org/en/facebook4j-<version>xml
clientVersion Facebook4J クライアント API バージョン 1.1.12

プロデューサーエンドポイント:

プロデューサーエンドポイントは、以下の表のエンドポイント名とオプションを使用できます。エンドポイントは、get または search 接頭辞なしで短縮名を使用することもできます。.必須ではないエンドポイントオプションは [] で示されます。
プロデューサーエンドポイントは、特殊なオプション *inBody* を使用することもできます。これには、値が Camel Exchange In メッセージに含まれる endpoint オプションの名前が含まれる必要があります。たとえば、以下のルートの facebook エンドポイントは、受信メッセージボディーのユーザー ID 値のアクティビティーを取得します。
from("direct:test").to("facebook://activities?inBody=userId")...
Copy to Clipboard Toggle word wrap
エンドポイントオプションは、エンドポイント URI またはメッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFacebook.option の形式でなければなりません。たとえば、前のルートの userId オプション値は、CamelFacebook.userId メッセージヘッダーに別の方法で提供できます。inBody オプションはメッセージヘッダーを上書きすることに注意してください。たとえば、inBody=userCamelFacebook.userId ヘッダーを上書きすることに注意してください。
文字列を返すエンドポイントは、作成または変更されたエンティティーの Id を返します。たとえば、addAlbumPhoto は新しいアルバム ID を返します。ブール値を返すエンドポイントは、成功の場合は true を返し、それ以外の場合は false を返します。Facebook API エラーが発生すると、エンドポイントは facebook4j.FacebookException が原因で RuntimeCamelException を出力します。
Expand
エンドポイント ショートネーム オプション ボディタイプ
アカウント
getAccounts アカウント [reading],[userId] facebook4j.ResponseList<facebook4j.Account>
アクティビティー
getActivities アクティビティー [reading],[userId] facebook4j.ResponseList<facebook4j.Activity>
Albums
addAlbumPhoto addAlbumPhoto albumId,source,[message] 文字列
commentAlbum commentAlbum albumId,message 文字列
createAlbum createAlbum albumCreate,[userId] 文字列
getAlbum album albumId,[reading] facebook.Album
getAlbumComments albumComments albumId,[reading] facebook4j.ResponseList<facebook4j.Comment>
getAlbumCoverPhoto albumCoverPhoto albumId java.net.URL
getAlbumLikes albumLikes albumId,[reading] facebook4j.ResponseList<facebook4j.Like>
getAlbumPhotos albumPhotos albumId,[reading] facebook4j.ResponseList<facebook4j.Photos>
getAlbums albums [reading],[userId] facebook4j.ResponseList<facebook4j.Album>
コメント
deleteComment deleteComment commentId boolean
getComment comment commentId facebook4j.Comment
getCommentLikes commentLikes commentId,[reading] facebook4j.ResponseList<facebook4j.Like>
イベント
getEvent event eventId,[reading] facebook4j.Event
getEventPhotos eventPhotos eventId,[reading] facebook4j.ResponseList<facebook4j.Photo>
getEventPictureURL eventPictureURL eventId,[size] java.net.URL
getEvents events [reading],[userId] facebook4j.ResponseList<facebook4j.Event>
getEventVideos eventVideos eventId,[reading] facebook4j.ResponseList<facebook4j.Video>
getRSVPStatusAsNoreply rSVPStatusAsNoreply eventId,[userId] facebook4j.ResponseList<facebook4j.RSVPStatus>
getRSVPStatusInAttending rSVPStatusInAttending eventId,[userId] facebook4j.ResponseList<facebook4j.RSVPStatus>
getRSVPStatusInDeclined rSVPStatusInDeclined eventId,[userId] facebook4j.ResponseList<facebook4j.RSVPStatus>
getRSVPStatusInMaybe rSVPStatusInMaybe eventId,[userId] facebook4j.ResponseList<facebook4j.RSVPStatus>
postEventFeed postEventFeed eventId,postUpdate 文字列
postEventLink postEventLink eventId,link,[message] 文字列
postEventPhoto postEventPhoto eventId,source,[message] 文字列
postEventStatusMessage postEventStatusMessage eventId,message 文字列
postEventVideo postEventVideo eventId,source,[title,description] 文字列
rsvpEventAsAttending rsvpEventAsAttending eventId boolean
rsvpEventAsDeclined rsvpEventAsDeclined eventId boolean
rsvpEventAsMaybe rsvpEventAsMaybe eventId boolean
ファミリー
getFamily family [reading],[userId] facebook4j.ResponseList<facebook4j.Family>
お気に入り
getBooks 書籍 [reading],[userId] facebook4j.ResponseList<facebook4j.Book>
getGames games [reading],[userId] facebook4j.ResponseList<facebook4j.Game>
getMovies videos [reading],[userId] facebook4j.ResponseList<facebook4j.Movie>
getMusic music [reading],[userId] facebook4j.ResponseList<facebook4j.Music>
getTelevision television [reading],[userId] facebook4j.ResponseList<facebook4j.Television>
FQL (Facebook Query Language)
executeFQL executeFQL query,[locale] facebook4j.internal.org.json.JSONArray
executeMultiFQL executeMultiFQL queries,[locale] java.util.Map<tring,facebook4j.internal.org.json.JSONArray>
friends
addFriendlistMember addFriendlistMember friendlistId,userId boolean
createFriendlist createFriendlist friendlistName,[userId] 文字列
deleteFriendlist deleteFriendlist friendlistId boolean
getBelongsFriend belongsFriend friendId,[reading],[userId] facebook4j.ResponseList<facebook4j.Friend>
getFriendlist friendlist friendlistId,[reading] facebook4j.FriendList
getFriendlistMembers friendlistMembers friendlistId facebook4j.ResponseList<facebook4j.Friend>
getFriendlists friendlists [reading],[userId] facebook4j.ResponseList<facebook4j.FriendList>
getFriends friends [reading],[userId] facebook4j.ResponseList<facebook4j.Friend>
removeFriendlistMember removeFriendlistMember friendlistId,userId boolean
games
deleteAchievement deleteAchievement achievementURL,[userId] boolean
deleteScore deleteScore [userId] boolean
getAchievements 達成度 [reading],[userId] facebook4j.ResponseList<facebook4j.Achievement>
getScores スコア [reading],[userId] facebook4j.ResponseList<facebook4j.Score>
postAchievement postAchievement achievementURL,[userId] 文字列
postScore postScore scoreValue,[userId] 文字列
グループ
getGroup group groupId,[reading] facebook4j.Group
getGroupDocs groupDocs groupId,[reading] facebook4j.ResponseList<facebook4j.GroupDoc>
getGroupFeed groupFeed groupId,[reading] facebook4j.ResponseList<facebook4j.Post>
getGroupMembers groupMembers groupId,[reading] facebook4j.ResponseList<facebook4j.GroupMember>
getGroupPictureURL groupPictureURL groupId java.net.URL
getGroups groups [reading],[userId] facebook4j.ResponseList<facebook4j.Group>
postGroupFeed postGroupFeed groupId,postUpdate 文字列
postGroupLink postGroupLink groupId,link,[message] 文字列
postGroupStatusMessage postGroupStatusMessage groupId,message 文字列
Insights
getInsights Insights objectId,metric,[reading] facebook4j.ResponseList<facebook4j.Insight>
likes
getUserLikes userLikes [reading],[userId] facebook4j.ResponseList<facebook4j.Like>
リンク
commentLink commentLink linkId,message 文字列
getLink リンク linkId,[reading] facebook4j.Link
getLinkComments linkComments linkId,[reading] facebook4j.ResponseList<facebook4j.Comment>
getLinkLikes linkLikes linkId,[reading] facebook4j.ResponseList<facebook4j.Like>
メッセージ
getInbox inbox [reading],[userId] facebook4j.InboxResponseList<facebook4j.Inbox>
getMessage message messageId,[reading] facebook4j.Message
getOutbox 送信トレイ [reading],[userId] facebook4j.ResponseList<facebook4j.Message>
getUpdates updates [reading],[userId] facebook4j.ResponseList<facebook4j.Message>
通知
getNotifications 通知 [includeRead],[reading],[userId] facebook4j.ResponseList<facebook4j.Notification>
markNotificationAsRead markNotificationAsRead notificationId boolean
パーミッション
getPermissions permissions [userId] java.util.List<acebook4j.Permission>
revokePermission revokePermission permissionName,[userId] boolean
写真
addTagToPhoto addTagToPhoto photoId,[toUserId],[toUserIds],[tagUpdate] boolean
commentPhoto commentPhoto photoId,message 文字列
deletePhoto deletePhoto photoId boolean
getPhoto photo photoId,[reading] facebook4j.Photo
getPhotoComments photoComments photoId,[reading] facebook4j.ResponseList<facebook4j.Comment>
getPhotoLikes photoLikes photoId,[reading] facebook4j.ResponseList<facebook4j.Like>
getPhotos 写真 [reading],[userId] facebook4j.ResponseList<facebook4j.Photo>
getPhotoURL photoURL photoId java.net.URL
getTagsOnPhoto tagsOnPhoto photoId,[reading] facebook4j.ResponseList<facebook4j.Tag>
postPhoto postPhoto source,[message],[place],[noStory],[userId] 文字列
updateTagOnPhoto updateTagOnPhoto photoId,[toUserId],[tagUpdate] boolean
Pokes
getPokes pokes [reading],[userId] facebook4j.ResponseList<facebook4j.Poke>
posts
commentPost commentPost postId,message 文字列
deletePost deletePost postId boolean
getFeed フィード [reading],[userId] facebook4j.ResponseList<facebook4j.Post>
getPost post postId,[reading] facebook4j.Post
getPostComments postComments postId,[reading] facebook4j.ResponseList<facebook4j.Comment>
getPostLikes postLikes postId,[reading] facebook4j.ResponseList<facebook4j.Like>
getPosts posts [reading],[userId] facebook4j.ResponseList<facebook4j.Post>
getTagged tagged [reading],[userId] facebook4j.ResponseList<facebook4j.Post>
postFeed postFeed postUpdate,[userId] 文字列
postLink postLink link,[message],[userId] 文字列
postStatusMessage postStatusMessage message,[userId] 文字列
getSubscribedto subscribedto [reading],[userId] facebook4j.ResponseList<facebook4j.Subscribedto>
getSubscribers 加入者 [reading],[userId] facebook4j.ResponseList<facebook4j.Subscriber>
ユーザーのテスト
createTestUser createTestUser appId,[name],[userLocale],[permissions] facebook4j.TestUser
deleteTestUser deleteTestUser testUserId boolean
getTestUsers testUsers appId java.util.List<acebook4j.TestUser>
makeFriendTestUser makeFriendTestUser testUser1,testUser2 boolean
Users
getMe me [reading] facebook4j.User
getPictureURL pictureURL [size],[userId] java.net.URL
getUser user userId,[reading] facebook4j.User
getUsers users ids java.util.List<acebook4j.User>
動画
commentVideo commentVideo videoId,message 文字列
getVideo video videoId,[reading] facebook4j.Video
getVideoComments videoComments videoId,[reading] facebook4j.ResponseList<facebook4j.Comment>
getVideoCover videoCover videoId java.net.URL
getVideoLikes videoLikes videoId,[reading] facebook4j.ResponseList<facebook4j.Like>
getVideos 動画 [reading],[userId] facebook4j.ResponseList<facebook4j.Video>
postVideo postVideo source,[title,description],[userId] 文字列
検索
search search query,[reading] facebook4j.ResponseList<facebook4j.internal.org.json.JSONObject>
searchEvents events query,[reading] facebook4j.ResponseList<facebook4j.Event>
searchGroups groups query,[reading] facebook4j.ResponseList<facebook4j.Group>
searchPlaces 場所 query,[reading],[center,distance] facebook4j.ResponseList<facebook4j.Place>
searchPosts posts query,[reading] facebook4j.ResponseList<facebook4j.Post>
SearchUsers users query,[reading] facebook4j.ResponseList<facebook4j.User>

コンシューマーエンドポイント:

read #Reading Options パラメーターを取るプロデューサーエンドポイントはいずれも、コンシューマーエンドポイントとして使用できます。ポーリングコンシューマーは、since および until フィールドを使用して、ポーリング間隔内の応答を取得します。他の読み取りフィールドに加えて、最初のポーリングのエンドポイントで値の最初の値を指定できます。
単一のルートエクスチェンジで List (または facebook4j.ResponseList)を返すエンドポイントではなく、camel-facebook は返されたオブジェクトごとに 1 つのルートエクスチェンジを作成します。たとえば、facebook://home が 5 つの 投稿になる場合、ルートは 5 回実行されます(Post ごとに 1 回)。
Expand
名前 タイプ 説明
achievementURL java.net.URL 達成の一意の URL
albumCreate facebook4j.AlbumCreate 作成する Facebook Album
albumId 文字列 アルバム ID
allowNewOptions boolean 他のユーザーが新しいオプションを追加できる場合は True
appId 文字列 Facebook アプリケーションの ID
中央 facebook4j.GeoLocation 場所 latitude および longitude
commentId 文字列 コメント ID
description 文字列 説明テキスト
distance int 名の距離
eventId 文字列 イベント ID
eventUpdate facebook4j.EventUpdate 作成または更新するイベント
friendId 文字列 friend ID
friendUserId 文字列 friend ユーザー ID
friendlistId 文字列 フリンドリスト ID
friendlistName 文字列 先頭リスト名
groupId 文字列 グループ ID
ids String[] ユーザーの ID
includeRead boolean 未読の通知に加えて、ユーザーがすでに読んでいるという通知を有効にします。
リンク java.net.URL リンク URL
linkId 文字列 リンク ID
locale java.util.Locale 目的の FQL ロケール
message 文字列 メッセージのテキスト
messageId 文字列 メッセージ ID
メトリクス 文字列 メトリクス名
name 文字列 ユーザー名をテストします。最初は last の形式でなければなりません
noStory boolean true に設定すると、アプリケーションを使用して写真をアップロードする際に、ユーザーのプロファイルで自動的に生成されるフィードストーリーが抑制されます。
noteId 文字列 ノート ID
notificationId 文字列 通知 ID
objectId 文字列 Insights オブジェクト ID
optionDescription 文字列 質問の回答オプションの説明
options java.util.List<String> 質問の回答オプション
permissionName 文字列 パーミッション名
permissions 文字列 perm1,perm2,... の形式でユーザーパーミッションをテストします。
photoId 文字列 写真 ID
配置 文字列 写真に関連付けられた場所の Facebook ID
placeId 文字列 場所 ID
postId 文字列 投稿 ID
postUpdate facebook4j.PostUpdate 作成または更新の投稿
クエリー java.util.Map<tring> FQL クエリー
query 文字列 FQL クエリーまたは検索用語で検索*エンドポイント
質問 文字列 質問テキスト
questionId 文字列 質問 ID
読み取り facebook4j.Reading オプションの読み取りパラメーター。Reading Options(#Reading Options)を参照してください。
scoreValue int 値の数値スコア
size facebook4j.PictureSize 図のサイズ、大型、通常の、小、または角の 1 つ
source facebook4j.Media java.io.File または java.io.Inputstream のいずれかからのメディアコンテンツ
subject 文字列 サブジェクトの注記
tagUpdate facebook4j.TagUpdate 写真タグ情報
testUser1 facebook4j.TestUser ユーザーのテスト
testUser2 facebook4j.TestUser ユーザーのテスト
testUserId 文字列 テストユーザーの ID
title 文字列 タイトルテキスト
toUserId 文字列 タグを付けるユーザーの ID
toUserIds java.util.List<tring> タグを付けるユーザーの ID
userId 文字列 Facebook ユーザー ID
userId1 文字列 ユーザーの ID
userId2 文字列 ユーザーの ID
userIds String[] イベントに招待するユーザーの ID
userLocale 文字列 テストユーザーロケール
videoId 文字列 ビデオ ID

オプションの読み取り

facebook4j.Reading タイプの read オプションでは、パラメーターの読み取りがサポートされるようになりました。これにより、特定のフィールドの選択や結果数の制限などが可能になります。詳細は、Facebook DevelopersGraph API を参照してください。
また、ポーリング全体で重複したメッセージが送信されないように、Facebook データをポーリングするためにコンシューマーエンドポイントによっても使用されます。
読み取りオプションは、facebook4j.Reading タイプの参照または値、または CamelFacebook. 接頭辞を持つエンドポイント URI またはエクスチェンジヘッダーのいずれかで以下の読み取りオプションを使用して指定できます。
Expand
オプション 説明
reading.fields field1,field2,.. の形式で取得するフィールド名。
reading.limit リスト結果に対して返す項目数を制限します。たとえば、10 の制限により、1 から 10 が返されます。
reading.offset リスト結果の開始オフセット(制限が 10 など)、10 のオフセットはアイテム 11 から 20 を返します。
reading.until 時間ベースのデータの範囲の最後を参照する Unix タイムスタンプまたは strtotime データ値
reading.since 時間ベースのデータの範囲の開始を示す Unix タイムスタンプまたは strtotime データ値
reading.locale 特定のロケールでローカライズされたコンテンツを取得します。言語が文字列として指定される [,country][,variant]
reading.with ロケーション情報がアタッチされているオブジェクトに関する情報を取得し、true に設定します。
reading.metadata Facebook Graph API Introspection を使用してオブジェクトメタデータを取得し、true に設定します。
reading.filter ユーザーのストリームフィルターキー。Facebook stream_filterを参照してください。

メッセージヘッダー

「コンシューマーエンドポイント:」 はいずれも、CamelFacebook. 接頭辞を持つプロデューサーエンドポイントのメッセージヘッダーに提供できます。

メッセージボディー

すべての結果メッセージ本文は、Facebook4J API が提供するオブジェクトを使用します。プロデューサーエンドポイントは、inBody エンドポイントパラメーターに受信メッセージボディーのオプション名を指定できます。
配列を返すエンドポイント、または facebook4j.ResponseList または java.util.List の場合、コンシューマーエンドポイントはリスト内のすべての要素を個別のメッセージにマップします。

ユースケース

Facebook プロファイル内に投稿を作成するには、このプロデューサーを facebook4j.PostUpdate ボディーに送信します。
	from("direct:foo")
		.to("facebook://postFeed/inBody=postUpdate);
Copy to Clipboard Toggle word wrap
自宅フィードのすべてのステータスを 5 秒ごとにポーリングするには、次のコマンドを実行します。
	from("facebook://home?consumer.delay=5000")
		.to("bean:blah");
Copy to Clipboard Toggle word wrap
ヘッダーから動的オプションでプロデューサーを使用した検索。
バーヘッダーには公開投稿で実行する Facebook 検索文字列があるため、この値を CamelFacebook.query ヘッダーに割り当てる必要があります。
	from("direct:foo")
		.setHeader("CamelFacebook.query", header("bar"))
		.to("facebook://posts");
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat