HTTP Postリクエストをしないといけなかったので、Network.HTTP.Conduitを使ってみた。といってもぜんぜんSourceとかSinkとか出てこないけれども。一部抜粋。
getAccessToken :: String -> IO (Maybe Text)
getAccessToken code = do
let payload = [("code", C8.pack code), ("client_id", C8.pack key),
("client_secret", C8.pack sec),
("redirect_uri", "http://localhost:3000/auth/page/GooglePlus"),
("grant_type", "authorization_code")]
parsedUrl <- parseUrl accUrl
let req = urlEncodedBody payload $ parsedUrl
(statusCode, content) <- withManager $ \manager -> do
Response status _ bsrc <- httpLbs req manager
return (status, bsrc)
putStrLn $ "Got status: " ++ (show statusCode)
Ugoita
Got status: Status {statusCode = 200, statusMessage = "OK"}
StringをByteStringに変換するのはData.ByteString.Char8を使うといいぽい。import qualified Data.ByteString.Char8 as C8。仲間にData.ByteString.UTF-8があるということはきっとユニコードはそっちをつかったほうがいいということだろう。