リダイレクトURLをマネージャー/Facebookモナドのこれらのレイヤーを介して戻すと、フィードすることができるように見えます。リダイレクトされたURLのタイプはです。これにはtypeclassText
のインスタンスがあり、関数を使用するために必要です(ドキュメントを参照)。RedirectUrl
redirect
次のような方法でこの作業を行うことができるはずです。
getAccessTokenR :: Handler RepHtml
getAccessTokenR = do
url <- withManager $ \manager ->
FB.runFacebookT creds manager $
FB.getUserAccessTokenStep1 redirUrl []
redirect url
ここには本当の魔法はありません。基本的に2つの高レベルのパターンが進行中です。1つはリソースの使用状況(この場合はmanager
)をローカライズする「with」パターンで、もう1つは「run」パターンです。モナド変換子の使用(詳細についてはまだあまり気にしないでください!)。
したがってwithManager
、使用するマネージャーを提供します。おそらく、マネージャーのセットアップと削除を処理します。これはおそらく次のように入力されます
withManager :: (Manager -> Handler a) -> Handler a
その中にFacebookランナーがあり、次のように入力されます。
runFacebookT :: Credentials -> Manager -> FacebookT Auth Handler a -> Handler a
これは基本的に、クレデンシャル、マネージャー、およびFacebook固有の計算(リダイレクトURLの取得など)を与えると、それを選択したモナドに変換できることを意味します(ここでは、それが必要Handler
なため、選択しますwithManager
)。あなたの場合、a
型変数はText
リダイレクトURLのものです。
このパターンのペアを使用するwith
と、その奥深くで提供されたURLがモナドrun
にバブルアップするという結果が得られます。Handler
次に、それを引っ掛けてredirect
関数に渡します。