Haskell Yesod:在简单项目中处理会话数据

Haskell Yesod:在简单项目中处理会话数据,haskell,github,oauth,oauth-2.0,yesod,Haskell,Github,Oauth,Oauth 2.0,Yesod,我希望使用GitHub作为oauth2端点对用户进行身份验证,并获取一些会话数据 我已经完成了整个身份验证工作,但我希望能够从会话中获得用户ID以外的一些更有用的信息,例如会话令牌,这样我就可以代表他们进行GitHub API调用 我不知道YesDouth的实例和操作方式,也不知道整个插件架构在YesDouth中是如何工作的,所以这里的任何建议都是非常棒的 这就是我现在的处境: Foundation.hs instance YesodAuth App where type AuthId Ap

我希望使用GitHub作为oauth2端点对用户进行身份验证,并获取一些会话数据

我已经完成了整个身份验证工作,但我希望能够从会话中获得用户ID以外的一些更有用的信息,例如会话令牌,这样我就可以代表他们进行GitHub API调用

我不知道YesDouth的实例和操作方式,也不知道整个插件架构在YesDouth中是如何工作的,所以这里的任何建议都是非常棒的

这就是我现在的处境:

Foundation.hs

instance YesodAuth App where
  type AuthId App = Text
  getAuthId = return . Just . credsIdent

  loginDest _ = HomeR
  logoutDest _ = HomeR

  authPlugins _ =
    [ -- authBrowserId def,
      oauth2Github clientId clientSecret
    ]

  authHttpManager = appHttpManager

  -- Session functions here
  -- ???
  maybeAuthId = lookupSession "_ID"
getHomeR :: Handler Html 
getHomeR = do
    --(formWidget, formEnctype) <- generateFormPost sampleForm
    --let submission = Nothing :: Maybe FileForm
    --    handlerName = "getHomeR" :: Text

    maid <- maybeAuthId

    -- Getting nothing for all of these
    sess <- getSession
    let access_token = lookup "access_token" sess
        user_name = lookup "login" sess
Home.hs

instance YesodAuth App where
  type AuthId App = Text
  getAuthId = return . Just . credsIdent

  loginDest _ = HomeR
  logoutDest _ = HomeR

  authPlugins _ =
    [ -- authBrowserId def,
      oauth2Github clientId clientSecret
    ]

  authHttpManager = appHttpManager

  -- Session functions here
  -- ???
  maybeAuthId = lookupSession "_ID"
getHomeR :: Handler Html 
getHomeR = do
    --(formWidget, formEnctype) <- generateFormPost sampleForm
    --let submission = Nothing :: Maybe FileForm
    --    handlerName = "getHomeR" :: Text

    maid <- maybeAuthId

    -- Getting nothing for all of these
    sess <- getSession
    let access_token = lookup "access_token" sess
        user_name = lookup "login" sess
getHomeR::Handler Html
getHomeR=do

--(formWidget,formEnctype)您能看到会话“\u ID”中的内容吗?这可能包含在其中序列化的“访问令牌”信息。它是GitHub用户ID,没有令牌。它在当前会话中返回,没有其他内容。我认为可以通过某种方式配置YesDouth以在会话中返回更多内容,但我还没有找到一种方法。