diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# Version 2.1.1.2
+
+* Add support for Aeson v2.2+.
+
 # Version 2.1.1.1
 
 * Add support for Aeson v2+.
diff --git a/fb.cabal b/fb.cabal
--- a/fb.cabal
+++ b/fb.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.5.
+-- This file has been generated from package.yaml by hpack version 0.37.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           fb
-version:        2.1.1.1
+version:        2.1.1.2
 synopsis:       Bindings to Facebook's API.
 description:    This package exports bindings to Facebook's APIs (see
                 <http://developers.facebook.com/>).  Does not have any external
@@ -45,6 +45,11 @@
   manual: False
   default: False
 
+flag pre-aeson-2-2-compat
+  description: Build with aeson < 2.2 where the attoparsec-aeson package didn't exist.
+  manual: False
+  default: False
+
 library
   exposed-modules:
       Facebook
@@ -69,8 +74,7 @@
       src
   ghc-options: -Wall
   build-depends:
-      aeson >=0.8.0.2
-    , attoparsec >=0.10.4
+      attoparsec >=0.10.4
     , base ==4.*
     , bytestring >=0.9
     , conduit >=1.3.0
@@ -90,9 +94,16 @@
     , unliftio
     , unliftio-core
     , unordered-containers
+  default-language: Haskell2010
   if flag(debug)
     cpp-options: -DDEBUG
-  default-language: Haskell2010
+  if flag(pre-aeson-2-2-compat)
+    build-depends:
+        aeson >=0.8.0.2
+  else
+    build-depends:
+        aeson >=2.2.0.0
+      , attoparsec-aeson >=2.1.0.0
 
 test-suite runtests
   type: exitcode-stdio-1.0
diff --git a/src/Facebook/Base.hs b/src/Facebook/Base.hs
--- a/src/Facebook/Base.hs
+++ b/src/Facebook/Base.hs
@@ -25,6 +25,9 @@
 import qualified Control.Monad.Trans.Resource as R
 import qualified Data.Aeson as A
 import qualified Data.Attoparsec.ByteString.Char8 as AT
+#if MIN_VERSION_aeson(2,2,0)
+import qualified Data.Aeson.Parser.Internal as AesonParserInternal
+#endif
 import qualified Data.ByteString as B
 import qualified Data.Conduit as C
 import Data.Conduit ((.|))
@@ -114,7 +117,12 @@
   _ <- liftIO $ printf "asJsonHelper: %s\n" (show bs)
   val <- either (fail . ("asJsonHelper: A.decode returned " ++)) return (A.eitherDecode bs)
 #else
+  -- aeson-2.2 moved this to new package `attoparsec-aeson`
+#if MIN_VERSION_aeson(2,2,0)
+  val <- C.runConduit $ (H.responseBody response) .| C.sinkParser AesonParserInternal.json'
+#else
   val <- C.runConduit $ (H.responseBody response) .| C.sinkParser A.json'
+#endif
 #endif
   case A.fromJSON val of
     A.Success r -> return r
