- Issue #660: Leadgen Webhook support added
Thanks to @pibernardi for the hint and the test data - Issue #661:
business_management
permission added
Thanks to @eipark for the hint - Issue #662: unit test improvements
- Issue #663:
addTo
andremoveTo
inMessage
type fixed - Issue #664 and #665:
UserPermission
added
Thanks to @anenkov for the PR - Issue #666:
isLike
method added to Messaging Webhook - Issue #667:
photo
field added toFeedCommentValue
Thanks to @pcricardo for the hint - Issue #669:
message
field added toFeedPhotoAddValue
Thanks to @incredibledevs for the hint - Issue #671:
video
field added toFeedCommentValue
Thanks to @pcricardo for the hint - Issue #670: Some code smells removed/fixed
- Issue #657: Add
equals
,hashcode
andtoString
to Send API types
Thanks to @marceloverdijk for the hint - Issue #655:
WorkExperience
type added - Issue #656:
SavedMessageResponse
type added - Issue #654: OpenGraph types added
- Issue #652:
InstagramUse
type added
Thanks to @hkroger for the hint - Issue #639:
LiveVideo
type added - Issue #650:
is_transient
field added to error
Thanks to @hkroger for the hint - Issue #651: License header changed to 2017
- Issue #634:
FEED_REACTION_EDIT
webhook type added - Issue #636:
FEED_VIDEO_EDITED
webhook type added - Issue #637:
CallToAction
object
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
toString
method toMessageRecipient
Impls
Thanks to @marceloverdijk for the hint - Issue #618:
deleteObject
support 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:
NotificationTypeEnum
added
Thanks to @marceloverdijk for the hint and PR - Issue #613:
fbtrace_id
added toFacebookGraphException
Thanks to @marceloverdijk for the hint - Issue #612:
MessageRecipient
interface 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_id
toMessageItem
class andMessagingAttachment
class
Thanks to @Abdelrahman-Hasan for the hint - Issue #596: Improve the
SendResponse
Thanks to @marceloverdijk for the hint - Issue #584: add
attachment_id
andis_reusable
toMediaAttachment
class
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
FlightSchedule
leads to error code when sending - Issue #592: Messenger documentation bug
Thanks to @vraffy for the hint
- Issue #594: add
- Issue #587: Added
ChangeValue
typeFEED_REACTION_ADD
Thanks to @misternerd for the hint - Issue #586: Wrong
appsecret_proof
created byEncodingUtils
Thanks to @mchmielarz for the hint - Issue #579: Move license files to root
- Issue #600 and #601:
NPE
on 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_ts
field inFeedTargeting
is missing
- Messenger Platform Update:
- Issue #566: new QuickReply types added
Thanks to @marceloverdijk for the hint - Issue #567:
CallButton
added - Issue #568:
ShareButton
added - Issue #571: Field
webview_height_ratio
added toWebButton
- Issue #569:
BuyButton
added,Payment
webhook 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
lastIndexOf
with Char - Issue #557: use
isEmpty()
instead ofsize()
where possible - Issue #561: catch
Exception
instead 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
SenderAction
enum
Thanks to @marceloverdijk for the hint - Issue #576: Fixed issue
MessagingItem.getItem
not returningReadItem
Thanks to @marceloverdijk for the PR - Issue #555:
FacebookPermissions
scope changed to public
Thanks to @rhino88 for the PR
- Issue #548 and #549: Support for
x-page-usage
header
Thanks to @kukido for the PR - Issue #543:
getCoverPhoto
returnsPhoto
-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:
LifeEvent
type 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 replies
support toSend API
Thanks to @alexdlaird for the PR - Issue #524: Message object should contain a
metadata
field
Thanks to @alexdlaird for the PR - Issue #523:
AdsImageCrops
deserialization doesn't work
Thanks to @hkroger for the hint - Issue #528 and #527: Removed
product
fromcom.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_platforms
in 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_id
field removed fromAdCreative
Thanks to @hkroger for the hint - Issue #507:
AdCreativeLinkDataCallToAction
value 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_echo
field added toMessageItem
Thanks to @alexdlaird for the PR - Issue #490:
SendResponse
added 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
rule
field
Thanks to @hkroger for the hint - Issue #484:
TargetingProductAudienceSubSpec.retetionSeconds
changed
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
OGObject
is missingimage
Thanks to @Enalmada for the hint - Issue #480: Sonar URL changed
- Issue #479: missing fields in
AdCreative
type
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.xml
improved - formatting and minor changes - Issue #471: logging changed,
String.format is used
- Issue #458:
FundingSourceDetails
causes an exception
Thanks to @hkroger - Issue #457:
getLoginDialogUrl
does 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:
likes
field inPage
my 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_tags
inVideo
type - Issue #438: missing
PageLabel
type - Issue #441:
Messaging
webhook 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
Parameter
name
Thanks to @rheylen - Issue #439: cleanup - change boolean to Boolean
- Issue #440: Adding
xmpp_login
extended page permission
Thanks to @alexdlaird for PR
- Graph API 2.6 support
- Issue #433:
PageAdminNote
type is missing - Issue #431:
Pages
typelikes
renamed tofan_count
- Issue #430: Post
reactions
- Issue #428:
Video
type has fieldlive_audience_count
- Issue #427:
Video
type new fieldlive_status type
- Issue #426: new permission
pages_messaging_phone_number
- Issue #425: new permission
pages_messaging
- Issue #437: reactions added to
Video
andPhoto
type - Issue #424: Version enum
- Issue #433:
- Issue #423: Missing
page post
values in webhook type
Thanks to @volkenborn for providing some JSON files - Issue #419: add missing permission
pages_manage_instant_articles
- Issue #418: Improve
GraphResponse
type - 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:
Notification
type 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
shares
added toMessage
type
Thanks to @ajeetsk for hint - Issue #407: Build files updated
- Issue #377: Check the permissions
- Issue #379: Missing fields in
AppRequest
type - Issue #380: Missing fields in
Event
type - Issue #381: Missing fields in
Group
type - Issue #382: Missing fields in
Message
type - Issue #383: Missing fields in
Photo
type - Issue #384: Missing fields in
User
type - Issue #385: Missing fields in
Page
type - Issue #388: Missing fields in
Conversation
type - Issue #389: Missing fields in
PageCallToAction
type - Issue #392: Deprecated types marked
- Issue #393: Missing fields in
Post
type - Issue #394 and #395:
PageRatings
are outdated
Thanks to @anenkov for PR - Issue #396 and #397:
Comments
missescan_comment
field
Thanks to @anenkov for PR - Issue #398: Missing
parent_id
field inPost
type
Thanks to @vido88 - Issue #400: duplicate
type
field in several types - Issue #401: Webhooks Fields update
Thanks to @cmmoran
- Issue #375: "private message page replies" support added
- Issue #369:
Translation
type added - Issue #370:
PlaceTag
type added - Issue #371: deprecation information for permissions add
Thanks to @lomon for hint - Issue #368:
Milestone
type added - Issue #373:
User
fields missing
Thanks to @lomon for hint - Issue #366:
Application
type missing fields added - Issue #358:
Payment
type added - Issue #343: Webhook types added
- Issue #363: example code moved to repository
- Issue #362: waffle.io badge added
- Issue #356:
PageCallToAction
type 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 time
field added toPage
-type - Issue #340: Parsing `yyyy-MM-dd produces wrong date
- Issue #338: wrong date format for
Work
type fieldsstartDate
andendDate
Thanks to @PetrF0X for input - Issue #336:
Album
type -fillPicture
method uses wrong type for mapping the image - Issue #335: Access post likes summary
has_liked
andcan_like
values
Thanks to @jarylchong for input - Issue #186:
Page rating
type 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:
place
field inEvent
-type changed toPlace
-type
Thanks to Matthew Gillingham for input - Issue #331:
album
field and other fields added toPhoto
-type
Thanks to @tsurelad for input - Issue #333:
comments
and more fields added toAlbum
-type
Thanks to Paolo for input
- Issue #317: Marketing API improved
- Issue #324:
message_tags
field 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
Location
type - Issue #305:
facebook-api-version
HTTP header is logged - Issue #307: Missing fields added to
Insight
type - Issue #308:
DefaultJsonMapper
test coverage improved - Issue #309: Cleanup - formatting and imports
- Issue #312:
Event.getPicture()
fixed
Thanks to @OhGhie4iew - Issue #313:
CoverPhoto
added toUser
type - 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:
likes
field inComment
type changed
Thanks to Bogdan Neacsa
- Issue #273: Normalize license header
- Issue #271: Add
devices
field 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:
ProfilePictureSource
forPage
-type - Issue #246: Commens/Likes added to
Video
type (incl special count method)
Thanks to @anenkov
- Issue #261:
targeting
field missing inPost
-type
Thanks to @Karnifexx - Issue #262: mapping exception when using
Post
withfeed_targeting
andtarget city
Thanks to @Karnifexx - Issue #263:
full_picture
field missing inPost
type
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_proof
integration 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
scopes
field toDebugTokenInfo
-type - Issue #230:
username
field inUser
type is deprecated
Thanks to @ashrithg - Issue #231: Added
hours
field toPage
response
Thanks for the pull request to Mattias Holmqvist - Issue #235: Add more fields to
DebugTokenInfo
-type
Thanks to @fern - Issue #236: Bugfix:
obtainUserAccessToken
will 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_hidden
andis_published
fields 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_posts
permission - Issue #203: Graph API debug mode
- Issue #204: add field
admin_creator
toPost
-type (Page Post only) - Issue #205: new page fields
- Issue #206: new page settings
- Issue #208:
Page
featured videos collection - Issue #209:
published
field added toVideo
-type - Issue #210: Video custom thumbnail
- Issue #211: Video new fields
- Issue #212:
read_friendlists
permission isread_custom_friendlists
- Issue #213:
publish_pages
permission
- Issue #200: Graph API 2.3 hint
- Issue #196: Logout Url Builder added
Thanks to Fagner Brack - Issue #193:
AdVideo
support 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:
ScopeBuilder
added
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-range
field added toUser
type - 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_hide
andis_hidden
fields 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:
Version
Enum 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:
object
field 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,
DateFormatStrategies
added
Thanks for input and code review to @inthepocket, Marcel Stoer, Mike Hazelwood, Peter Vahlstrup - Issue #139: performance boost section added to website
- Issue #58:
JsonArray
serializable
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_list
field added toPlace
-type
Thanks to Quentin Rousseau - Issue #109:
Photo.Tag
x and y changed to Double
Thanks to Peter Vahlstrup - Issue #110:
Backdated time
andgranularity
added toPhoto
-type
Thanks to Peter Vahlstrup - Issue #107:
website
field 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_proof
functionality.
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_comment
andparent
fields 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. -
FacebookGraphException
now hasgetErrorCode()
andgetErrorSubcode()
in the event that FB returns these. Previously this was only available forFacebookOAuthException
.
Thanks to Peter Vahlstrup. -
Fix for
Venue
-type (added newid
field)
Thanks to sbisht and neXus1987 -
Added missing fields to
Message
type.
Thanks to Felipe Kurkowski. -
Added missing fields to
Comment
type.
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
expires
parsing inAccessToken.fromQueryString()
.
Thanks to Chris Petersen. - Added
can_upload
field toAlbum
-type.
Thanks to Chris Petersen. - Added
status_type
field 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
currency
field toUser
-type.
Thanks to Timo Maaranen for reporting this. - Added
general_info
field toPage
-type.
Thanks to Brendan Dahl for reporting this. - Added
link
,subject
, andformer_participants
fields toConversation
-type.
Thanks to spiffychick for reporting this. - Added
shares
toPost
-type.
Thanks to Mike Champion for the pull request. - Added
attachments
,updated_time
,unread
, andunseen
fields 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 theJsonMapper
has completed its work, e.g. massaging JSON data into other formats. - Bugfix: The
message_tags
field 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.HTTP
logger and now default toFINE
instead ofINFO
for 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. FacebookOAuthException
now includes anerrorCode
field since FB now returns one.
Thanks to connectvg for the bug report.FacebookOAuthException
now includes anhttpStatusCode
field 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:ssZ
string.
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.types
to 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
Connection
page iteration.
Thanks to Takashi Kawachi for the patch.
- Now allow batch requests to specify
name
parameter and fixed a bug where request headers were not being included in requests.
Thanks to jyorke. - Added new
place
field toPost
type.
Thanks to Chris Schilling. - Added new
location
field toPage
type.
Thanks to Fernando Padilla. - Made several updates to the
education
field on theUser
type.
Thanks to Marcel Stoer and Silent Film. - Fix for FB's inconsistent and undocumented behavior for returning
likes
andcomments
fields 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
comments
andlikes
fields toStatusMessage
(FB docs are incorrect).
Thanks to nstratos and volkenborn for letting me know. - Added
cover_photo
andprivacy
fields toAlbum
.
Thanks to serg472 for the heads-up. - Added
checkins
andphone
fields toPage
.
Thanks to jaiswal.rahul for the heads-up about thecheckins
field. - Added an example project which shows how to route
java.util.logging
calls 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.BinaryAttachment
type. 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.BinaryAttachment
are 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
, andimages
fields toPhoto
type.
Thanks to Andre Oosthuizen and Grace Win. -
Added
name
,tags
, andsource
fields toVideo
and markedmessage
as deprecated.
Thanks to Andre Oosthuizen and Marcel Stoer. -
Added
likes
andaccess_token
fields toPage
and deprecatedfan_count
.
Thanks to Shashank Agarwal and jspyeatt. -
Added
object_id
field toPost
.
Thanks to Grace Win. -
Added
username
field toUser
.
Thanks to Iwan Gulenko. -
Added
city
,state
, andcountry
fields toCheckin.Place.Location
.
Thanks to Thom Nichols. -
Removed
messages
andlikes
fields fromStatusMessage
because they're now connections. Added thetype
field toStatusMessage
.
Thanks to volkenborn@yahoo.com.
- Added
application
andtype
fields toPost
.
Thanks to nelrib. - Removed
mobilePhone
andaddress
fields fromUser
.
Thanks to Marcel Stoer. - Added undocumented
properties
field toPost
type.
- 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.gsports
andlanguages
.
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_page
anddescription
fields to thePage
type.
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
Insight
type which can be used like this:Connection<Insight> insights = facebookClient.fetchConnection("PAGE_ID/insights", Insight.class);
-
You can now instruct
DefaultJsonMapper
how 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
quotes
andaddress
andmobile_phone
fields to theUser
type.
Thanks to ne52 for the heads-up about the addition of the quotes field. -
DateUtils.toDateFromMonthYearFormat
now returns null for0000-00
instead 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>
JsonException
is now unchecked.- Fix for start and end date handling on the
Event
type.
Thanks to Jason Peltzer. - @Facebook annotation on accessToken on
Account
type is now correctly mapped toaccess_token
.
Thanks to Scott Aaron. - Added the
category
field to theCheckin.Place
type.
Thanks to Mattia Tommasone. Latitude
andLongitude
fields onCheckin.Place
are now of typeDouble
instead 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.logging
instead 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
contains
attribute on@Facebook
annotation 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
JsonMapper
to map toJsonObject
, which permits you to have total control over result mapping at run time (as opposed to the compile-time-only@Facebook
annotation). -
JsonMapper
now 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.util
package. -
Added new exception package
com.restfb.exception
and 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.birthday
causes 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
,comments
toVideo
type.
Thanks to Fahd Akbar and Chris Pruett. -
Added
Account
type 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:
ReflectionUtils
now caches@Facebook
field 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.
NamedFacebookType
now 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
, andDefaultLegacyFacebookClient
are 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 Tag
object - updated to reflect that.
Thanks to Max for reporting. - Facebook added fields to the
User
object - updated to reflect that.
Thanks to fellahst and ndimiduk for reporting. - HTTP GET operations executed by
DefaultWebRequestor
now 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
DefaultLegacyFacebookClient
because Facebook changed thetoken
param 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
WebRequestor
now supports POSTs which perform file uploading and GETs- The
com.restfb.json
undocumented package is now gone. Theorg.json
code 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.multiquery
API call - Minor JSON mapping fixes and error message improvements
- Updated website with
fql.multiquery
documentation and explicit mention of non-support of session key acquisition
- Initial release