- Issue #782: Support custom wit.ai NLP in Messenger
- Issue #781: Fix Java 7 built on Travis CI
- Issue #787: Let Travis CI built RestFB with Java 9
- Issue #784: Prevent nullpointer when null quickReplies in
Message
Thanks to @SijmenHuizenga for the PR - Issue #785:
ChangeValueFactorytries to convert a string toJsonObjectand throws exception
Thanks to @maurocanuto for the hint and the example JSON
- Issue #765: Messenger Platform 2.1: support NLP on messages
- Issue #779: Ads: Reach Frequency Prediction type is missing
- Graph API 2.10 support
- Issue #760 and #773: basic support added
Thanks to @jcdavidconde for the hint - Issue #763: Webhook updates for
eventadded to factory
- Issue #760 and #773: basic support added
- Messenger Platform:
- Issue #757: shareable option is missing in Send API
- Issue #766 : Policy Enforcement Callback
- Issue #753: Bugfix for uploading video captions
Thanks to @frank72833 for the hint - Issue #769:
VideoCaptiontype added - Issue #758:
RATINGS_RATING_EDITadded to Webhook types - Issue #759:
FEED_VIDEO_REMOVEadded to Webhook types - Issue #752: Add fields missing from
AdCreativeLinkDataandAdCreativeVideoData
Thanks to @pkoivisto for the PR - Issue #756: Add missing fields for
AdCreativeLinkDataCallToActionValue
Thanks to @pkoivisto for the PR
- Issue #741:
commentIdfield added toFeedReactionValue
Thanks to @thienit5 for the hint - Issue #742:
TargetingSentenceLineimproved
Thanks to @eipark for the hint - Issue #744: add
open_graph_story_idto ratings comment
Thanks to @abid76 for the hint - Issue #745:
Post.getLikesCountshould return 0 if no likes field is found
Thanks to @bogdanlupashko for the hint - Issue #748: Add missing
thread_keytoPageConversationwebhook type - Issue #749: Webhook from editing a visitors post maps to
FallBackChangeValue
Thanks to @CrWEE for the hint
- Issue #730: Add
permalink_urltoComment
Thanks to @ashishnargundkar for the hint - Issue #729: Add
target_countriesto `LookalikeSpec
Thanks to @graysky for the hint - Issue #728:
TargetingSentenceLinemissing
Thanks to @eipark for the hint - Issue #732: Getter for
DebugTokenErroradded
Thanks to @ClaudioBull for the PR - Issue #733: Spring mapping issue fixed
Thanks to @bogdanlupashko for the hint - Issue #735: Webhook "mention" ChangeValue added
Thanks to @torbenw for the hint - Issue #736:
X-Page-UsageandX-App-Usagereturn JSON instead of percentageString - Issue #738:
PersistentMenuInvalid keyscallToActions
Thanks to @thienit5 for the hint
- Issue #723:
AdReportRunFieldstype added
Thanks to @eipark for the hint - Issue #725: Reactions support for
Comments - Issue #726: Fetching device access tokens fixed
- Issue #719: DefaultJsonMapper incorrectly attempts to map string to an array
Thanks to @pkoivisto for the bug report
- Graph API 2.9:
- Issue #713: basic Graph API 2.9 support
- Issue #714:
short_nameadded toUsertype - Issue #716:
engagementadded toURLtype - Issue #715:
fieldsinsubscriptionsobject changed
This is a breaking change! Check the javadoc
- Messenger Platform 2.0:
- Issue #717: ID matching types added
- Issue #706: multiple photos support added to Webhook type
Thanks to @GithubMood for the hint - Issue #709: Integration test for posting to a group added
- Issue #708: Fetching users from group integration test added
Thanks to @saveSession for the hint
- Issue #691: Rest API set to deprecated
- Issue #690: Contributing.md added
- Issue #696: Version 2.2 set to deprecated
- Issue #694: Webhook: missing ChangeValues RATINGS_REACTION_ADD/EDIT/REMOVE
- Issue #697: Missing fields in post.call_to_action added
Thanks to @nemzsom for the hint - Issue #699: README.md updated
Thanks to @chena for the PR - Issue #698 and #702: fetchObjects normelizes IDs
Thanks to @UbaldoF and @oferfort for the hints - Issue #693: Adding setters to the facebook endpoint URL's
Thanks to @jaguth for the PR
- Messenger Platform 1.4 support
- Issue #680:
PersistentMenuadded - Issue #683: quick replies limit increased to 11
- Issue #682:
localeadded toGreeting - Issue #681: optional
namefield added to phone recipient - Issue #676:
image_aspect_ratioadded toGenericTemplatePayload
- Issue #680:
- Issue #673:
AdStudytype added
Thanks to @hkroger for the hint - Issue #674:
is_canceledadded toEventtype
Thanks to @DerKeil for the hint - Issue #672:
snapshot()method added to connection iterator
Thanks to @DerKeil for the information and the hints - Issue #679:
call_to_actionadded toPosttype
Thanks to @CrWEE for the hint - Issue #685:
child_attachmentsadded toPosttype
Thanks to @nemzsom for the hint - Issue #686:
comment_idadded toFeedLikeValuewebhook type
Thanks to @Glenn-Bergmans for the hint
- Issue #660: Leadgen Webhook support added
Thanks to @pibernardi for the hint and the test data - Issue #661:
business_managementpermission added
Thanks to @eipark for the hint - Issue #662: unit test improvements
- Issue #663:
addToandremoveToinMessagetype fixed - Issue #664 and #665:
UserPermissionadded
Thanks to @anenkov for the PR - Issue #666:
isLikemethod added to Messaging Webhook - Issue #667:
photofield added toFeedCommentValue
Thanks to @pcricardo for the hint - Issue #669:
messagefield added toFeedPhotoAddValue
Thanks to @incredibledevs for the hint - Issue #671:
videofield added toFeedCommentValue
Thanks to @pcricardo for the hint - Issue #670: Some code smells removed/fixed
- Issue #657: Add
equals,hashcodeandtoStringto Send API types
Thanks to @marceloverdijk for the hint - Issue #655:
WorkExperiencetype added - Issue #656:
SavedMessageResponsetype added - Issue #654: OpenGraph types added
- Issue #652:
InstagramUsetype added
Thanks to @hkroger for the hint - Issue #639:
LiveVideotype added - Issue #650:
is_transientfield added to error
Thanks to @hkroger for the hint - Issue #651: License header changed to 2017
- Issue #634:
FEED_REACTION_EDITwebhook type added - Issue #636:
FEED_VIDEO_EDITEDwebhook type added - Issue #637:
CallToActionobject
Thanks to @haresh208 for the hint
- Issue #632: fix error in javadoc
Thanks to @alexconlin for the PR - Issue #631: performance issue with stacktrace during logging
Thanks to @hkroger for the hint
- Messenger Platform 1.3 support
- Issue #619: Passing parameters via M.me links
- Issue #620: List Template
- Issue #621: seq id is deprecated
- Issue #622: Checkbox plugin support
Thanks to @marceloverdijk for the hint - Issue #623: messaging_referral event
Thanks to @marceloverdijk for the hint
- Issue #625: Bugfix for logger name issue
Thanks to @torbenw for the bug report - Issue #626: Add
toStringmethod toMessageRecipientImpls
Thanks to @marceloverdijk for the hint - Issue #618:
deleteObjectsupport thread settings now
Thanks to @marceloverdijk for the hint - Issue #574 and #617: Thread settings enums added
Thanks to @marceloverdijk for the hint and PR - Issue #615 and #616:
NotificationTypeEnumadded
Thanks to @marceloverdijk for the hint and PR - Issue #613:
fbtrace_idadded toFacebookGraphException
Thanks to @marceloverdijk for the hint - Issue #612:
MessageRecipientinterface added
Thanks to @marceloverdijk for the hint
- Cleanup:
- Issue #602: Readme changed to describe only basic usage
- Issue #604: Experimental package marked as deprecated
- Issue #608: unused imports removed
- Issue #605: more targeting improvements
Thanks to @matthewbogner for the hint and PR - Issue #607: PaymentItem credentials changed to credential Thanks to @barhun for the hint
- Issue #603: Basic logging change to resolve #31
- Graph API 2.8:
- Issue #589: Feed Targeting
- Issue #590: User Bios
- Issue #588: Basic support
- Graph API 2.7:
- Issue #517: Add missing field to
VideoCopyright
- Issue #517: Add missing field to
- Messenger Platform:
- Issue #594: add
sticker_idtoMessageItemclass andMessagingAttachmentclass
Thanks to @Abdelrahman-Hasan for the hint - Issue #596: Improve the
SendResponse
Thanks to @marceloverdijk for the hint - Issue #584: add
attachment_idandis_reusabletoMediaAttachmentclass
Thanks to @Abdelrahman-Hasan for the hint - Issue #581: Please add a
Message#addQuickReplies(multiple)
Thanks to @marceloverdijk for the hint - Issue #582: Throw exception on adding too many
QuickReplies - Issue #580: Wrong Date in
FlightScheduleleads to error code when sending - Issue #592: Messenger documentation bug
Thanks to @vraffy for the hint
- Issue #594: add
- Issue #587: Added
ChangeValuetypeFEED_REACTION_ADD
Thanks to @misternerd for the hint - Issue #586: Wrong
appsecret_proofcreated byEncodingUtils
Thanks to @mchmielarz for the hint - Issue #579: Move license files to root
- Issue #600 and #601:
NPEon emptymessage_tags
Thanks to @anenkov for the PR - Issue #599: add support for interests in
post.feed_targeting
Thanks to @matthewbogner for the hint and PR - Issue #597:
relevant_until_tsfield inFeedTargetingis missing
- Messenger Platform Update:
- Issue #566: new QuickReply types added
Thanks to @marceloverdijk for the hint - Issue #567:
CallButtonadded - Issue #568:
ShareButtonadded - Issue #571: Field
webview_height_ratioadded toWebButton - Issue #569:
BuyButtonadded,Paymentwebhook type added - Issue #570: Webview and Extension fields added
- Issue #566: new QuickReply types added
- General Cleanup:
- Issue #556: log exceptions that can be ignored
- Issue #559: log more exceptions and use
lastIndexOfwith Char - Issue #557: use
isEmpty()instead ofsize()where possible - Issue #561: catch
Exceptioninstead ofThrowable - Issue #564: types should extend
AbstractFacebookType
- Issue #552: Added missing fields to comment attachments
Thanks to @mnshdw for the PR - Issue #544: Add
toString()method to webhook classes
Thanks to @marceloverdijk for the hint - Issue #553: Add
SenderActionenum
Thanks to @marceloverdijk for the hint - Issue #576: Fixed issue
MessagingItem.getItemnot returningReadItem
Thanks to @marceloverdijk for the PR - Issue #555:
FacebookPermissionsscope changed to public
Thanks to @rhino88 for the PR
- Issue #548 and #549: Support for
x-page-usageheader
Thanks to @kukido for the PR - Issue #543:
getCoverPhotoreturnsPhoto-type now
Thanks to @torbenw for the hint - Issue #546: account linking support for webhook
Thanks to @marceloverdijk for the hint - Issue #547: account linking support for send API
- Issue #542: greeting
thread_settings
Thanks to @uwol for the PR - Issue #541: quick replies not working correctly
- Issue #539: Additional change values for webhook
Thanks to @CrWEE for the PR - Issue #540: fetch device access token with Graph API 2.7 fixed
- Issue #538: Ad types checked for usage of fields with type
object - Issue #537: Integration test for likes/fan_count
- Issue #536: Graph API 2.0 deprecated
- Issue #535: Targeting rule deserialisation fixed
Thanks to @hkroger for the hint
- Issue #391, #532 and #533:
LifeEventtype added
Thanks to @quangpld for the PR - Issue #522: TargetingProductAudienceSubSpec setRule not visible outside package
Thanks to @hkroger for the hint - Issue #525: Add
Quick repliessupport toSend API
Thanks to @alexdlaird for the PR - Issue #524: Message object should contain a
metadatafield
Thanks to @alexdlaird for the PR - Issue #523:
AdsImageCropsdeserialization doesn't work
Thanks to @hkroger for the hint - Issue #528 and #527: Removed
productfromcom.restfb.types.Payment
Thanks to @fmachado for the PR - Issue #526:
jsonObject.keys()as String-typed Iterator
Thanks to @leandroutn for the hint - Issue #529: cleanup - Add unittests to utils package
- Issue #531: Missing field
publisher_platformsin Targeting class
Thanks to @huymluu for the hint - Issue #530: Webhooks: add unhide for all HIDE-able elements
- Issue #513: More Webhook ChangeValue types added
Thanks to @gnagy for the PR - Issue #501: Error when sending smiley fixed
Thanks to @bqcuong2212 for the hint - Issue #496: TargetingProductAudienceSubSpec serialization
Thanks to @hkroger for the hint - Issue #518: Deserializing Lookalike Custom Audience fails
Thanks to @hkroger for the hint - Issue #511: Adding read-receipt item to web hook.
Thanks to @alexdlaird for the PR - Issue #514: Graph API 2.7 support
- Issue #516: Graph API 2.7 - Add missing fields to Video type
- Issue #516: Graph API 2.7 - Add missing is_webhooks_subscribed field to Page type
- Issue #512: Append classDefinition to ChangeValueFactory log warning message
Thanks to @gnagy for the PR
- Issue #509: Marketing API - form leads added
- Issue #508:
creative_idfield removed fromAdCreative
Thanks to @hkroger for the hint - Issue #507:
AdCreativeLinkDataCallToActionvalue cannot be deserialized
Thanks to @hkroger for the hint - Issue #506: Add a Gitter chat badge to README.md
- Issue #505: MessagingItem"` timestamp field is always null
Thanks to @alexdlaird - Issue #504: Messenger fallback attachments
Thanks to @alexdlaird for the PR - Issue #503: Location Attachment and Receipt Template Improvements; Airline Templates
Thanks to @alexdlaird for the PR - Issue #502: Fallback Attachment Fails Parsing (String, Not Object)
Thanks to @alexdlaird - Issue #500: EVEN MORE Attachment Improvements (Plus Some Message Attributes)
Thanks to @alexdlaird - Issue #498: Custom Audience missing lookalike specific fields
Thanks to @hkroger for the hint - Issue #497: When creating catalog, you need undocumented password field
Thanks to @hkroger for the hint
- Issue #495 and #493: Messenger Attachment Improvements
Thanks to @alexdlaird for the PR - Issue #494: Incorrect Javadoc throws declaration
Thanks to @eebbesen for the PR - Issue #491:
is_echofield added toMessageItem
Thanks to @alexdlaird for the PR - Issue #490:
SendResponseadded as Send API Response
Thanks to @alexdlaird for the hint - Issue #487: product catalog management API added
Thanks to @hkroger for the hint - Issue #486: more comples structure for
rulefield
Thanks to @hkroger for the hint - Issue #484:
TargetingProductAudienceSubSpec.retetionSecondschanged
Thanks to @hkroger for the hint - Issue #483: convenience constructor added to
IDName
Thanks to @hkroger for the hint - Issue #482: Missing Search API types added
Thanks to @hkroger for the hint - Issue #481: Url class
OGObjectis missingimage
Thanks to @Enalmada for the hint - Issue #480: Sonar URL changed
- Issue #479: missing fields in
AdCreativetype
Thanks to @hkroger for the hint - Issue #478: Error while reading
AdGroup
Thanks to @hkroger for the hint - Issue #476: Sonar - fix connection issues
- Issue #475: Sonar - xml indentation changed to 2 chars
- Issue #472: setting welcome message for messenger bot
Thanks to @bqcuong2212 for the hint
- Issue #460: Issue with TOS fields in
AdAccount
Thanks to @hkroger - Issue #461: Page is missing
owner_business
Thanks to @hkroger - Issue #462: Retrieve business userpermissions
Thanks to @hkroger - Issue #463: Provide JsonObject to Map<String, T> conversion
- Issue #464: Custom/Lookalike Audience managment
Thanks to @hkroger - Issue #468: getter/setter test base class improved
- Issue #469: sonar analysis added to travis.yml
- Issue #470:
pom.xmlimproved - formatting and minor changes - Issue #471: logging changed,
String.format is used
- Issue #458:
FundingSourceDetailscauses an exception
Thanks to @hkroger - Issue #457:
getLoginDialogUrldoes not support reauthentication
Thanks to @hkroger - Issue #456: add "hide status" to webhook types
- Issue #455: Add rate limiting header
- Issue #454: Post: story tags are missing
- Issue #453:
likesfield inPagemy be a list instead of long
Thanks to @vido88 - Issue #451: Successful login redirect contains "expires_in" instead of expires
Thanks to @Mobe91 - Issue #448: PageRating missing fields / failing parsing
Thanks to @ronaldheft for hint and PR
- Graph API 2.6 support
- Issue #435: missing field
content_tagsinVideotype - Issue #438: missing
PageLabeltype - Issue #441:
Messagingwebhook types (Messenger Platform) - Issue #443: Send Api types (Messenger Platform)
- Issue #445: Device Login URL changed
Thanks to DigitalXXL
- Issue #435: missing field
- Issue #444: bugfix - corrupted
Parametername
Thanks to @rheylen - Issue #439: cleanup - change boolean to Boolean
- Issue #440: Adding
xmpp_loginextended page permission
Thanks to @alexdlaird for PR
- Graph API 2.6 support
- Issue #433:
PageAdminNotetype is missing - Issue #431:
Pagestypelikesrenamed tofan_count - Issue #430: Post
reactions - Issue #428:
Videotype has fieldlive_audience_count - Issue #427:
Videotype new fieldlive_status type - Issue #426: new permission
pages_messaging_phone_number - Issue #425: new permission
pages_messaging - Issue #437: reactions added to
VideoandPhototype - Issue #424: Version enum
- Issue #433:
- Issue #423: Missing
page postvalues in webhook type
Thanks to @volkenborn for providing some JSON files - Issue #419: add missing permission
pages_manage_instant_articles - Issue #418: Improve
GraphResponsetype - Issue #415: Missing
getVideoData()on `com.restfb.types.Message.Attachment
Thanks to @lalitg14 for the hint and the JSON
- Issue #409 and #410: Handled missing rating, is_draft, language fields in PageRating
Thanks to @venilnoronha for bug report and PR - Issue #411: Custom RestFB tags added to javadoc
- Issue #390:
Notificationtype added - Issue #403: Missing fields in
Message Attachment - Issue #404: Integration test for posting a image to a group
Thanks to @kfredy for question - Issue #405: Missing field
sharesadded toMessagetype
Thanks to @ajeetsk for hint - Issue #407: Build files updated
- Issue #377: Check the permissions
- Issue #379: Missing fields in
AppRequesttype - Issue #380: Missing fields in
Eventtype - Issue #381: Missing fields in
Grouptype - Issue #382: Missing fields in
Messagetype - Issue #383: Missing fields in
Phototype - Issue #384: Missing fields in
Usertype - Issue #385: Missing fields in
Pagetype - Issue #388: Missing fields in
Conversationtype - Issue #389: Missing fields in
PageCallToActiontype - Issue #392: Deprecated types marked
- Issue #393: Missing fields in
Posttype - Issue #394 and #395:
PageRatingsare outdated
Thanks to @anenkov for PR - Issue #396 and #397:
Commentsmissescan_commentfield
Thanks to @anenkov for PR - Issue #398: Missing
parent_idfield inPosttype
Thanks to @vido88 - Issue #400: duplicate
typefield in several types - Issue #401: Webhooks Fields update
Thanks to @cmmoran
- Issue #375: "private message page replies" support added
- Issue #369:
Translationtype added - Issue #370:
PlaceTagtype added - Issue #371: deprecation information for permissions add
Thanks to @lomon for hint - Issue #368:
Milestonetype added - Issue #373:
Userfields missing
Thanks to @lomon for hint - Issue #366:
Applicationtype missing fields added - Issue #358:
Paymenttype added - Issue #343: Webhook types added
- Issue #363: example code moved to repository
- Issue #362: waffle.io badge added
- Issue #356:
PageCallToActiontype added
- Issue #355: copyright year changed to 2016
- Issue #354: changelog syntax changed to markdown
- Issue #352: access to Facebook HTTP debug headers and HTTP headers in general
Thanks to Alex Conlin for input - Issue #351:
last used timefield added toPage-type - Issue #340: Parsing `yyyy-MM-dd produces wrong date
- Issue #338: wrong date format for
Worktype fieldsstartDateandendDate
Thanks to @PetrF0X for input - Issue #336:
Albumtype -fillPicturemethod uses wrong type for mapping the image - Issue #335: Access post likes summary
has_likedandcan_likevalues
Thanks to @jarylchong for input - Issue #186:
Page ratingtype rewrite
Thanks to Ron Heft for input
- Issue #328: Facebook Exception provides access to raw error json
Thanks to Fran Sanchez for input - Issue #330: Bugfix:
placefield inEvent-type changed toPlace-type
Thanks to Matthew Gillingham for input - Issue #331:
albumfield and other fields added toPhoto-type
Thanks to @tsurelad for input - Issue #333:
commentsand more fields added toAlbum-type
Thanks to Paolo for input
- Issue #317: Marketing API improved
- Issue #324:
message_tagsfield added toPost-type
Thanks to Miguel Sandim for input - Issue #325: missing fields added to
Comment-type
Thanks to Miguel Sandim for input - Issue #322: missing fields added to
Video-type
Thanks to @aonischenko for input
- Issue #315 and #316: Graph API 2.5 support
- Issue #122: Enum support added to
DefaultJsonMapper
Thanks to @MusikPolice for the input - Issue #159: Marketing API support added
Thanks to @yange for the input - Issue #218: Value methods for
PageSettings - Issue #289: Osgi bundle
Thanks to @skaluva for the PR - Issue #289: integration test for
/me/likes - Issue #303: LICENSE added to root
- Issue #304: Missing fields added to
Locationtype - Issue #305:
facebook-api-versionHTTP header is logged - Issue #307: Missing fields added to
Insighttype - Issue #308:
DefaultJsonMappertest coverage improved - Issue #309: Cleanup - formatting and imports
- Issue #312:
Event.getPicture()fixed
Thanks to @OhGhie4iew - Issue #313:
CoverPhotoadded toUsertype - NoIssue: documentation improved on website
- Issue #252: strange events behaviour
Thanks to Paul Myburgh - Issue #277: version enum changed - `LATEST added
Thanks to @skaluva - Issue #286:
likesfield inCommenttype changed
Thanks to Bogdan Neacsa
- Issue #273: Normalize license header
- Issue #271: Add
devicesfield toUser-type - Issue #270: Graph API 2.4 -
Video-type new fields - Issue #267: Wrong mapping for (Feed)Targeting
Thanks to @Karnifexx - Issue #266: general Graph API 2.4 support
- Issue #265: PR - Blank URL in BatchRequest
Thanks to @ehrmann - Issue #260:
ProfilePictureSourceforPage-type - Issue #246: Commens/Likes added to
Videotype (incl special count method)
Thanks to @anenkov
- Issue #261:
targetingfield missing inPost-type
Thanks to @Karnifexx - Issue #262: mapping exception when using
Postwithfeed_targetingandtarget city
Thanks to @Karnifexx - Issue #263:
full_picturefield missing inPosttype
Thanks to @CannyDuck
- Issue #258: Device Access Token support added
- Issue #256: Using FeedTargeting wrapper when posting
Thanks to @Karnifexx - Issue #249 and #248: PR Post is hidden wrong place
Thanks to @2bitoperations - Issue #247: Inefficiency in DefaultFacebookClient
Thanks to @lawrence-dol - Issue #245: FacebookClient (interface) publish method missing
Thanks to @lawrence-dol - Issue #243:
appsecret_proofintegration tests - Issue #220: Webhooks (RTU) subcription high level API
Thanks to @FrancoisThareau - Issue #207: Graph API 2.3 video playlist support
- Issue #221: Add feed_targeting object and addfield to Post type
- Issue #226: Cleanup
- Issue #227: Mark Version 1.0 as deprecated
- Issue #228: Update example code
- Issue #229: Add
scopesfield toDebugTokenInfo-type - Issue #230:
usernamefield inUsertype is deprecated
Thanks to @ashrithg - Issue #231: Added
hoursfield toPageresponse
Thanks for the pull request to Mattias Holmqvist - Issue #235: Add more fields to
DebugTokenInfo-type
Thanks to @fern - Issue #236: Bugfix:
obtainUserAccessTokenwill not validate code infb_signed_request
Thanks to @frett - Issue #237: Comments regarding location and venue deprecation added
Thanks to @Blarff
- Issue #223: access token parsing for Graph API 2.3 added
Thanks to @SmokyBot - Issue #224: javadoc improvement regarding how some fields are filled
Thanks to @munwaikong
- Issue #219:
is_hiddenandis_publishedfields added toPost-type
Thanks to Karnifexx - Issue #215: FB error without "type" not handled properly
Thanks to @tonyd - Issue #214: Connection cursor broken
Thanks to @slumx and @naneunga - Graph API 2.3 support
- Issue #200: Graph API 2.3 hint
Thanks to Aurelie Vache - Issue #201: add new API Version to enum
- Issue #202: add
user_postspermission - Issue #203: Graph API debug mode
- Issue #204: add field
admin_creatortoPost-type (Page Post only) - Issue #205: new page fields
- Issue #206: new page settings
- Issue #208:
Pagefeatured videos collection - Issue #209:
publishedfield added toVideo-type - Issue #210: Video custom thumbnail
- Issue #211: Video new fields
- Issue #212:
read_friendlistspermission isread_custom_friendlists - Issue #213:
publish_pagespermission
- Issue #200: Graph API 2.3 hint
- Issue #196: Logout Url Builder added
Thanks to Fagner Brack - Issue #193:
AdVideosupport merged
Thanks to @maczam - Issue #192: ETag thread safety
- Issue #191: cursor support added
Thanks to @oferfort - Issue #187: Findbugs and Intellij inspection fixes
Thanks to Damian Pawlowski - Issue #106: ETag support added
- Issue #52:
ScopeBuilderadded
Thanks to Broc Seib for the input
- Issue #93: obtain user access token method added
Thanks to Johno Crawford - Issue #173: http delete added
Thanks to Eric Hydrick - Issue #176: DefaulFacebookClient - missing constructor added
Thanks to Denis Bardadym - Issue #177:
age-rangefield added toUsertype - Issue #179 + #171: restfb website moved to gh pages
Thanks for the input to Marcel Stör - Issue #181: binary post Integration test added
Thanks to Rick Fischer
- Issue #149:
can_hideandis_hiddenfields added
Thanks for input, code snippets and review to Aurelie Vache - Issue #154: deprecated constructors flagged with annotation
- Issue #155: version 1.7.1 prepared
- Issue #156:
VersionEnum fixed
Thanks to Aurelie Vache - Issue #158: experimental high level API added
- Issue #160: old FQL query and multiquery method set to deprecated
- Issue #161:
objectfield added toComment-type - Issue #164: additional details added to facebook exception
Thanks to Chandler - Issue #166: Copyright updated
- Issue #168: User.Education can handle String-only year
Thanks to @suryaganeshv - Issue #169: unittest fixed for java 8
- Issue #7: speed up date parsing,
DateFormatStrategiesadded
Thanks for input and code review to @inthepocket, Marcel Stoer, Mike Hazelwood, Peter Vahlstrup - Issue #139: performance boost section added to website
- Issue #58:
JsonArrayserializable
Thanks to @EpiXl33t, @rackom - Issue #44: DefaulWebRequestor should not close binaryAttachment stream
Thanks to Marcel Stoer - Issue #138:
Thread-type added - Issue #145, Issue #146, Issue #150: Graph API 2.2 support added
- Issue #133: comments and likes total count API unified
- Issue #143: API Versioning added to other endpoints
Thanks to @munwaikong - Issue #48: make types mutable
Thanks to Courtney Robinson, Broc Seib, Marcel Stoer - Issue #144: API check util added
- Issue #136: integration test configuration enhanced
- Issue #130:
URL-type replaced by a currentURL-type implementation
- Issue #131: lombok library added to generate getter automatically
- Issue #129: deleteObject bug using Graph API 2.1 fixed
Thanks to @Rekoe - Issue #128: total count added to connection
Thanks to @alfredoivan - Issue #99: obtaining extended access token via Http GET
Thanks to Venkateswaran S - Issue #82:
Review-type added
Thanks to @bhargavr - Issue #73: Missing field added to
Group,Metadata,Page,Post - Issue #72: Likes and Comments count fixed in Post object
- Issue #71: fetchObjects fails if non of the ids exist fixed
Thanks to @oferfort - Issue #21:
User.Picture-type added - Issue #19: Logging documentation improved, example refreshed
- Issue #15: empty list json issue fixed
Thanks to Shaya Potter - Issue #12: example build.xml modified to find the restfb.jar
Thanks to Shaya Potter - Issue #3:
DeAuth-type added - lot of unittests added
- integration tests added
- Issue #119: basic support for Facebook API versioning added (unversioned, v1.0, v2.0, v2.1)
- Issue #121:
category_listfield added toPlace-type
Thanks to Quentin Rousseau - Issue #109:
Photo.Tagx and y changed to Double
Thanks to Peter Vahlstrup - Issue #110:
Backdated timeandgranularityadded toPhoto-type
Thanks to Peter Vahlstrup - Issue #107:
websitefield added toPage-type
Thanks to Damian Pawlowski - unit test reorganized, mvn test is working now correctly
- some unit test added to check some issues
- Fix for regression in 1.6.13 where one DefaultFacebookClient constructor override would ignore the supplied
WebRequestor and JsonMapper and instead use the default implementations.
Thanks to AlekseiS
-
Support for
appsecret_prooffunctionality.
Thanks to Daniel Piet and Mike Champion. -
Now support signed request parsing with new
FacebookClient.parseSignedRequest().
Thanks to Josef Gierbl for the patch. -
Support for specifying content type for binary attachments.
Thanks to UglyTroLL. -
Added
can_commentandparentfields toComment-type.
BREAKING CHANGE:Post.getCount()is nowPost.getTotalCount()per July FB API changes.
Please request '{id}/comments?summary=true' explicitly if you would like the summary field which contains the total_count
Thanks to Jens Peters for the patch. -
FacebookGraphExceptionnow hasgetErrorCode()andgetErrorSubcode()in the event that FB returns these. Previously this was only available forFacebookOAuthException.
Thanks to Peter Vahlstrup. -
Fix for
Venue-type (added newidfield)
Thanks to sbisht and neXus1987 -
Added missing fields to
Messagetype.
Thanks to Felipe Kurkowski. -
Added missing fields to
Commenttype.
Thanks to Jan Schweizer. -
Added integer (0, 1) -> boolean JSON serialization.
Thanks to Tom Zellman. -
Convenience override of
FacebookClient.executeBatch()
Thanks to loicAG. -
Added missing fields to
Event-type
- Now support Graph API FQL endpoint with new
FacebookClient.executeFqlQuery()andFacebookClient.executeFqlMultiquery().FacebookClient.executeQuery()andFacebookClient.executeMultiquery()have been deprecated.
Thanks to Ofer Fort for the patch. - Fixed
expiresparsing inAccessToken.fromQueryString().
Thanks to Chris Petersen. - Added
can_uploadfield toAlbum-type.
Thanks to Chris Petersen. - Added
status_typefield toPost-type.
Thanks to Shaya Potter. - It is possible for Facebook to return a Place's Location object as a String instead - added Place.getLocationAsString().
Thanks to Ido for finding this. - Added
currencyfield toUser-type.
Thanks to Timo Maaranen for reporting this. - Added
general_infofield toPage-type.
Thanks to Brendan Dahl for reporting this. - Added
link,subject, andformer_participantsfields toConversation-type.
Thanks to spiffychick for reporting this. - Added
sharestoPost-type.
Thanks to Mike Champion for the pull request. - Added
attachments,updated_time,unread, andunseenfields toMessage-type.
Thanks to S13_Alan for the patch. - Fix for invalid Windows filename.
Thanks to Samuel Gélineau for the patch.
- New feature: you may annotate a method in a class mapped by JsonMapper with
@JsonMappingCompleted. Your method may be private and must take 0 parameters or 1 JsonMapper parameter. This is useful for performing one-time actions after theJsonMapperhas completed its work, e.g. massaging JSON data into other formats. - Bugfix: The
message_tagsfield inPost-type could throw an exception when JsonMapper attempted to map it.
Thanks to Shaya Potter for reporting this.
- Potentially-breaking change: in the event of a Graph API 404 (like fetching an object with an id that doesn't exist, e.g. /XXX)
we now throw the correct FacebookOAuthException instead of FacebookNetworkException.
Thanks to oferiko for the bug report. - Changed all network logging to use the new
com.restfb.HTTPlogger and now default toFINEinstead ofINFOfor normal requests/responses.
This means you must explicitly enable logging to see what goes over the wire.
Thanks to Johno Crawford and Marcel Stoer. - Added a new method to extend an existing Access Token:
See extend Access Token @ Facebook for details.
FacebookClient.obtainExtendedAccessToken(String appId, String appSecret, String accessToken).
Thanks to Chris Petersen for the initial patch. - Added a new method to acquire an Application Access Token:
See application accesstoken @ Facebook for details.
FacebookClient.obtainAppAccessToken(String appId, String appSecret).
Thanks to Chris Petersen for the initial patch. - Added Andrew Liles'
InsightUtils-class, which provides a nice wrapper around querying for Insights data.
Thanks to Andrew Liles. - Changed the signature of
FacebookClient.deleteObject(String object)toFacebookClient.deleteObject(String object, Parameter... parameters)to support parameterized deletion. This is a breaking change if you have a custom implementation of FacebookClient (should not be many of you).
Thanks to Nick Fenwick for the patch. FacebookOAuthExceptionnow includes anerrorCodefield since FB now returns one.
Thanks to connectvg for the bug report.FacebookOAuthExceptionnow includes anhttpStatusCodefield since it's helpful for client application error messaging.
Thanks to mtsahakis for the suggestion.DateUtils.toDateFromLongFormat(String date)now handles the case where FB occasionally returns the number of seconds since the epoch instead of ayyyy-MM-dd'T'HH:mm:ssZstring.
Thanks to raphael.lisboa@gauge.com.br for the bug report.- Added the static method
AccessToken.fromQueryString(String queryString), which encapsulates logic for parsing out Facebook's "standard" access token query strings, e.g. 'access_token=XXX' or 'access_token=XXX&expires=YYY'.
Thanks to egor@technoparkcorp.com for the suggestion. - Can now map Java types to JSON if they have multiple @Facebook annotations for the same value (e.g. User's hometown fields).
Previously the mapper would throw an exception, now it picks one of the fields - it's luck of the draw which one is used.
This behavior may change later, this is a quick workaround to address the issue short-term.
Thanks to petermein for the bug report. - Various changes to classes in
com.restfb.typesto reflect latest Facebook updates.
Thanks to Chris Petersen, Marcel Stoer, Mike Hazelwood, Marco Scavuzzo, Stefan Hauk, Mike Champion, nitinik, egor@technoparkcorp.com, and others.
- Bugfix for
Connectionpage iteration.
Thanks to Takashi Kawachi for the patch.
- Now allow batch requests to specify
nameparameter and fixed a bug where request headers were not being included in requests.
Thanks to jyorke. - Added new
placefield toPosttype.
Thanks to Chris Schilling. - Added new
locationfield toPagetype.
Thanks to Fernando Padilla. - Made several updates to the
educationfield on theUsertype.
Thanks to Marcel Stoer and Silent Film. - Fix for FB's inconsistent and undocumented behavior for returning
likesandcommentsfields inStatusMessage.
Thanks to volkenborn. - Moved to Github (https://github.com/revetkn/restfb) and back to an Ant-based build system for simplicity. RestFB releases will still be pushed to Maven central, but RestFB itself will no longer use Maven.
- The
Connection<T>constructor is now public and the class implementsIterable<List<T>>.
Thanks to kongo09, Andrew Liles, and everyone else who requested this. - Fixed regression: re-added
commentsandlikesfields toStatusMessage(FB docs are incorrect).
Thanks to nstratos and volkenborn for letting me know. - Added
cover_photoandprivacyfields toAlbum.
Thanks to serg472 for the heads-up. - Added
checkinsandphonefields toPage.
Thanks to jaiswal.rahul for the heads-up about thecheckinsfield. - Added an example project which shows how to route
java.util.loggingcalls to Log4j. It's available at http://restfb.com/examples/RestFB%20Log4j%20Example.zip
Thanks to Daniel Longosz for asking about this.
- Fixes a bug introduced in 1.6.5 where facebookClient.delete(...) would throw an NPE.
Thanks to Garret Collins.
-
BREAKING CHANGE:
We are no longer passing around InputStream objects to represent binary files when publishing - they have been replaced by instances of the new
com.restfb.BinaryAttachmenttype. So this method:<T> T FacebookClient.publish(String connection, Class<T> objectType, InputStream inputStream, Parameter... parameters)is now:
<T> T FacebookClient.publish(String connection, Class<T> objectType, BinaryAttachment binaryAttachment, Parameter... parameters)This change was necessary to support correct video uploads (FB now requires a filename with a video extension, e.g. .mov) and the new Batch API. Documentation and usage examples for
com.restfb.BinaryAttachmentare available on http://restfb.com. -
Added support for the new Batch API. The two new methods are:
List<BatchResponse> FacebookClient.executeBatch(BatchRequest... batchRequests) List<BatchResponse> FacebookClient.executeBatch(List<BatchRequest> batchRequests, List<BinaryAttachment> binaryAttachments)
Thanks to everyone who asked for this!
-
Added support for the new video upload API endpoint via https://graph-video.facebook.com and fixed a multipart filename bug that broke video uploads.
Thanks to yylaob@gmail.com for the filename bugfix and saylxxx@gmail.com and everyone else who asked for this! -
All types under com.restfb.types now implement Serializable.
Thanks to everyone who asked for this! -
Fixed a numeric precision bug in
JsonObject.getLong()which caused large numbers to be rounded incorrectly.
Thanks very much to ps@king.com for finding this and providing a patch. -
`DefaultJsonMapper`` can now instantiate types with no-argument constructors that are private, protected, or package-private - you no longer have to expose your constructors if you don't want to.
-
JsonMapper.toJson(Object object, boolean ignoreNullValuedProperties)was added, which enables you to turn a Java object into JSON without including any properties with null values. -
Added
comments,likes,position, andimagesfields toPhototype.
Thanks to Andre Oosthuizen and Grace Win. -
Added
name,tags, andsourcefields toVideoand markedmessageas deprecated.
Thanks to Andre Oosthuizen and Marcel Stoer. -
Added
likesandaccess_tokenfields toPageand deprecatedfan_count.
Thanks to Shashank Agarwal and jspyeatt. -
Added
object_idfield toPost.
Thanks to Grace Win. -
Added
usernamefield toUser.
Thanks to Iwan Gulenko. -
Added
city,state, andcountryfields toCheckin.Place.Location.
Thanks to Thom Nichols. -
Removed
messagesandlikesfields fromStatusMessagebecause they're now connections. Added thetypefield toStatusMessage.
Thanks to volkenborn@yahoo.com.
- Added
applicationandtypefields toPost.
Thanks to nelrib. - Removed
mobilePhoneandaddressfields fromUser.
Thanks to Marcel Stoer. - Added undocumented
propertiesfield toPosttype.
- RestFB now automatically uses the faster read-only endpoints for Graph and Old REST API calls when possible.
Thanks to Dmitry Naumenko for the suggestion. - POTENTIALLY BREAKING CHANGE: Old REST API calls (including FQL with the Graph API) will now throw
FacebookOAuthException instead of FacebookResponseStatusException when error code 190 is encountered.
Thanks to Ofer Fort for the suggestion. - It is now simple to customize how RestFB maps Facebook error responses to FacebookException instances
for both Graph and Old REST API errors by overriding
DefaultFacebookClient.createGraphFacebookExceptionMapper()andBaseFacebookClient.createLegacyFacebookExceptionMapper(), respectively. The default instances returned by both of these methods are now marked protected instead of anonymous classes so you can leverage them if you wish.
Thanks to Alexis Dufrenoy for the suggestion. - Added lots of new fields to
User, e.gsportsandlanguages.
Thanks to Patrick Alberts for the patch. - Added new PageConnection type, useful for mapping partial page types returned by some connections, e.g. "me/music".
Thanks to Patrick Alberts for the patch. - Added undocumented
is_community_pageanddescriptionfields to thePagetype.
Thanks to Ivan Viragine. - Can now customize HttpURLConnection creation in DefaultWebRequestor by overriding openConnection(URL url)
to support custom proxying etc.
Thanks to Matti Haro for the suggestion. - Added new
Insighttype which can be used like this:Connection<Insight> insights = facebookClient.fetchConnection("PAGE_ID/insights", Insight.class);
-
You can now instruct
DefaultJsonMapperhow to handle mapping exceptions, e.g. ignoring them and mapping as null instead of throwing an exception.FacebookClient facebookClient = new DefaultFacebookClient("MY_ACCESS_TOKEN", new DefaultWebRequestor(), new DefaultJsonMapper(new JsonMappingErrorHandler() { public boolean handleMappingError(String unmappableJson, Class<?> targetType, Exception e) { // Here you might log the fact that JSON mapping failed. err.println(format("Uh oh, mapping %s to %s failed...", unmappableJson, targetType)); // Returning true tells the mapper to map this JSON as null and keep going. // Returning false tells the mapper to throw an exception. return true; } } ));
The default behavior is still to throw an exception immediately on mapping errors, this callback interface is your way of saying "I know what I'm doing and want to handle errors myself". Very useful for keeping your app running in production when Facebook changes the API unexpectedly.
Thanks to Igor Kabiljo for the suggestion. -
Added new
quotesandaddressandmobile_phonefields to theUsertype.
Thanks to ne52 for the heads-up about the addition of the quotes field. -
DateUtils.toDateFromMonthYearFormatnow returns null for0000-00instead of0 AD. Not sure why FB gives us 0000-00 instead of null in some situations, e.g. work start date.
- We're now fully Mavenized - you can add RestFB to your Maven project like this:
Many thanks to Kalle Korhonen, and congratulations to him for being the first additional RestFB committer!
<dependency> <groupId>com.restfb</groupId> <artifactId>restfb</artifactId> <version>1.6.2</version> </dependency>
JsonExceptionis now unchecked.- Fix for start and end date handling on the
Eventtype.
Thanks to Jason Peltzer. - @Facebook annotation on accessToken on
Accounttype is now correctly mapped toaccess_token.
Thanks to Scott Aaron. - Added the
categoryfield to theCheckin.Placetype.
Thanks to Mattia Tommasone. LatitudeandLongitudefields onCheckin.Placeare now of typeDoubleinstead ofFloat, thereby supporting the full precision of the data returned by FB instead of truncating to fit correctly in a Float.
-
POTENTIALLY BREAKING CHANGE:
User.getPicture()has been removed. To get the user's picture, simply construct a URL by hand, e.g. http://graph.facebook.com/USER_ID/picture -
Now use
java.util.logginginstead of Log4j - RestFB now has 0 dependencies. -
FacebookException now extends
RuntimeException- you no longer have to catch it if you don't want to.
Thanks to Jeff Schnitzer. -
Removed
containsattribute on@Facebookannotation since it is no longer necessary.
Thanks to Igor Kabiljo for the initial patch. -
Exposed and cleaned up previously-internal RestFB's repackaged JSON.org code in the new com.restfb.json package.
-
You may now tell
JsonMapperto map toJsonObject, which permits you to have total control over result mapping at run time (as opposed to the compile-time-only@Facebookannotation). -
JsonMappernow supports having a Facebook JSON field mapped to multiple@Facebook-annotated Java fields. This addresses the issue of Facebook returning the same field name but differently-structured data in certain situations. See issues 56 and 90 for details.
Thanks to Daniel Winterstein, Igor Kabiljo, Marcel Stoer, Pramod Biligiri, and Tom Schindl for their input. -
Exposed and cleaned up previously-internal RestFB utilities in the new
com.restfb.utilpackage. -
Added new exception package
com.restfb.exceptionand exception types (FacebookOAuthException,FacebookQueryParseException) for simple handling of common Graph API exception types.
Thanks to Jeff Schnitzer. -
Added formal support for Connection paging by URL via
FacebookClient.fetchConnectionPage()and the newConnection.getPreviousPageUrl()/getNextPageUrl(). No more manual offset calculation required.Example:
Connection<Post> myFeed = facebookClient.fetchConnection("me/feed", Post.class); if(myFeed.hasNext()) { Connection<Post> myFeedPage2 = facebookClient.fetchConnectionPage(myFeed.getNextPageUrl(), Post.class); // ... }
Thanks to Jakub Danilewicz.
-
Added
FacebookClient.convertSessionKeysToAccessTokens()method.
Thanks to Scott Hernandez and Mattia Tommasone. -
Fixed issue where
User.birthdaycauses mapping to fail if "show only month & date" is set on FB.
Thanks to Kalle Korhonen. -
Old REST API now always uses the HTTPS endpoint.
Thanks to Christopher Oestlund. -
Added
embed_html,picture,icon,commentstoVideotype.
Thanks to Fahd Akbar and Chris Pruett. -
Added
Accounttype to support impersonation feature.
Thanks to jovanovich. -
Fixed error-handling issues: 1) where HTTP 400 error code would throw an incorrect exception and 2) where error response JSON would not get correctly read in this and other error situations.
Thanks to Igor Kabiljo, ovonick, and everyone else who reported this. -
Performance enhancement:
ReflectionUtilsnow caches@Facebookfield information so we never have to reflect more than once.
Thanks to Igor Kabiljo for the patch. -
Added Checkin type.
Thanks to everyone else who requested this and Colin Britton for the checkin code snippet. -
Added StatusMessage type.
-
Added middle_name field to User type.
Thanks to Fehmican Saglam.
- Post comment type now handles case where FB returns an empty array instead of an object type.
Thanks to Pipo, CR, S13_Alan, Igor Kabiljo, and Jakub Danilewicz.
NamedFacebookTypenow handles situation where FB returns, for example, "hometown":"Beograd", instead of the expected "hometown":{"id":123,"name":"Belgrade, Serbia"}
Thanks to Igor Kabiljo for the bug report and suggested fix.- Mapper now gracefully handles situation where Facebook returns the not-JSON string "false" and instead of {}.
Thanks to Igor Kabiljo for the bug report and suggested fix. - The Post type's comments field changed on the Facebook side to include a "count" field.
Thanks to Jakub Danilewicz for the bug report and suggested fix.
Thanks to Igor Kabiljo for the suggested fix. - Fixed infinite recursion bug that was triggerable in exceptional situations in ReflectionUtils.toString().
Thanks to Igor Kabiljo for the bug report and suggested fix. - Mapper fix for situations where Facebook returns the string "null" instead of an empty object or nothing.
Thanks to Igor Kabiljo for the bug report. - Timezone field in User is now a Double to account for timezones with fractional offsets.
Thanks to Sam for the bug report. - Changed Parameter's date marshaling to produce Facebook Date strings in a zero-based hour format.
Thanks to Jakub Danilewicz for the bug report and suggested fix. Connection<?>hasgetNext()andgetPrevious()methods that return the next/previous URLs returned by Facebook.- All fields in
BaseFacebookClient,DefaultFacebookClient, andDefaultLegacyFacebookClientare protected for easier subclassing. All Facebook API URLs are now overridable via protected accessor methods.
Thanks to Kalle Korhonen and bijuphilip0 for the enhancement requests. - Added locale field to User.
- No longer require an access token for the Graph API (now have a default constructor for
DefaultFacebookClient).
Thanks to Yoav Shapira for the enhancement request. - Facebook changed the data in the
Photo Tagobject - updated to reflect that.
Thanks to Max for reporting. - Facebook added fields to the
Userobject - updated to reflect that.
Thanks to fellahst and ndimiduk for reporting. - HTTP GET operations executed by
DefaultWebRequestornow usehttpUrlConnection.setUseCaches(false).
Thanks to Jumpa for reporting this. - Special check to only URL-encode access token if it's not already URL-encoded.
- OAuth support broke in
DefaultLegacyFacebookClientbecause Facebook changed thetokenparam toaccess_token.
Thanks to Antonio Casula for the initial problem report.
- Added support for the new Facebook Graph API
- Old REST API now has support for the new OAuth authentication tokens
- Fix for multiqueries with empty resultsets throwing a JSON mapping exception
WebRequestornow supports POSTs which perform file uploading and GETs- The
com.restfb.jsonundocumented package is now gone. Theorg.jsoncode is now package-private inside ofcom.restfb - Many small bugfixes and enhancements
- Enhanced examples and documentation
Thanks to Ofer Fort, Ryan Wilson, and Alex Launi for their input.
- Added support for Java -> JSON mapping to support more complex API calls like stream.publish.
Thanks to Alex Launi and biz@layes.com for their input.
- In response to recent FB changes, JSON mapper now coerces empty JSON arrays to empty Java Strings if you're trying to map to a String field.
Thanks to Antonello Naccarato for reporting this!
- Fixed bug related to mapping JSON null to Java types
- Library source is now included in the JAR for easy browsing in your IDE
- Formal support for
fql.multiqueryAPI call - Minor JSON mapping fixes and error message improvements
- Updated website with
fql.multiquerydocumentation and explicit mention of non-support of session key acquisition
- Initial release