如何使用 Haskell 将照片上传到 Facebook?
How can I upload a photo to Facebook using Haskell?
我正在使用 Happstack,我正在尝试使用 Facebook Graph 将照片上传到 Facebook API。
我可以成功 post 向 Facebook 发送消息。我可以使用 url
,但是我正在尝试使用 source
参数来做到这一点。
我有一个 PNG 数据的字节串,但我似乎无法将它传递给 Facebook。
我正在使用 fb Haskell library。
我为此创建的函数是:
performPost :: String -> IO Response
performPost code = do
x <- BS.readFile "test.png"
performFBAction $ do
postToFB (BS.unpack x) code =<< getToken url2 code
return $ toResponse postFB
postToFB :: (MonadResource m, MonadBaseControl IO m) => String -> String -> FB.UserAccessToken -> FB.FacebookT FB.Auth m FB.Id
postToFB dataString code token = FB.postObject "me/photos" [args "message" "Test Post Pls Ignore",
args "source" dataString] token
我收到的错误是:
The error was "StatusCodeException (Status {statusCode = 400, statusMessage = "Bad Request"}) [("Content-Type","text/html; charset=utf-8"),("Date","Thu, 29 Jan 2015 05:06:00 GMT"),("Connection","close"),("Content-Length","3121")] (CJ {expose = []})
我做错了什么? Graph API 指出 source
参数应该是数据类型,但到目前为止,我一直未能成功将其转换为这种类型。
谢谢!
请检查照片内容是否编码正确。它必须是multipart/form-data
,如
所述
托比说的是对的。正确执行此操作的代码是:
postPhoto :: FB.UserAccessToken -> IO Response
postPhoto (FB.UserAccessToken _ b _) = withSocketsDo $ withManager $ \m -> do
fbpost <- parseUrl $ "https://graph.facebook.com/v2.2/me/photos?access_token=" ++ T.unpack b
flip httpLbs m =<<
(formDataBody [partBS "message" "Test Message",
partFileSource "graph" "graph.png"]
fbpost)
return $ toResponse postFB
尽情享受吧!
我正在使用 Happstack,我正在尝试使用 Facebook Graph 将照片上传到 Facebook API。
我可以成功 post 向 Facebook 发送消息。我可以使用 url
,但是我正在尝试使用 source
参数来做到这一点。
我有一个 PNG 数据的字节串,但我似乎无法将它传递给 Facebook。
我正在使用 fb Haskell library。
我为此创建的函数是:
performPost :: String -> IO Response
performPost code = do
x <- BS.readFile "test.png"
performFBAction $ do
postToFB (BS.unpack x) code =<< getToken url2 code
return $ toResponse postFB
postToFB :: (MonadResource m, MonadBaseControl IO m) => String -> String -> FB.UserAccessToken -> FB.FacebookT FB.Auth m FB.Id
postToFB dataString code token = FB.postObject "me/photos" [args "message" "Test Post Pls Ignore",
args "source" dataString] token
我收到的错误是:
The error was "StatusCodeException (Status {statusCode = 400, statusMessage = "Bad Request"}) [("Content-Type","text/html; charset=utf-8"),("Date","Thu, 29 Jan 2015 05:06:00 GMT"),("Connection","close"),("Content-Length","3121")] (CJ {expose = []})
我做错了什么? Graph API 指出 source
参数应该是数据类型,但到目前为止,我一直未能成功将其转换为这种类型。
谢谢!
请检查照片内容是否编码正确。它必须是multipart/form-data
,如
托比说的是对的。正确执行此操作的代码是:
postPhoto :: FB.UserAccessToken -> IO Response
postPhoto (FB.UserAccessToken _ b _) = withSocketsDo $ withManager $ \m -> do
fbpost <- parseUrl $ "https://graph.facebook.com/v2.2/me/photos?access_token=" ++ T.unpack b
flip httpLbs m =<<
(formDataBody [partBS "message" "Test Message",
partFileSource "graph" "graph.png"]
fbpost)
return $ toResponse postFB
尽情享受吧!