gpt4 book ai didi

facebook - 如何使用 yesod-auth-fb 从 Facebook 登录获取用户的电子邮件地址?

转载 作者:行者123 更新时间:2023-12-02 09:13:43 25 4
gpt4 key购买 nike

我是 Haskell、Yesod 和 Facebook 开发者 API 的新手;尽管如此,我正在尝试使用这些技术编写一个网络应用程序。我尝试实现的第一个功能是用户必须能够使用 Facebook 登录信息登录我的网络应用程序,并且我需要获取唯一的用户 ID 和他们的电子邮件地址。

这是我到目前为止的代码;这几乎与您可以在 http://www.yesodweb.com/book/authentication-and-authorization 上找到的代码重复。 。我唯一改变的是从 BrowserID 切换到 Facebook 登录身份验证,请求“电子邮件”权限。

{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Data.Default (def)
import Data.Text
import Network.HTTP.Conduit (Manager, newManager)
import qualified Facebook as FB
import Yesod
import Yesod.Auth
import Yesod.Facebook (YesodFacebook(..))
import Yesod.Auth.Facebook.ServerSide

data App = App
{ httpManager :: Manager
}

mkYesod "App" [parseRoutes|
/ HomeR GET
/auth AuthR Auth getAuth
|]

instance Yesod App where
approot = ApprootStatic "<my server url>"

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

loginDest _ = HomeR
logoutDest _ = HomeR

authPlugins _ =
[ authFacebook ["email"]
]

authHttpManager = httpManager

maybeAuthId = lookupSession "_ID"

instance YesodFacebook App where
fbCredentials _ = FB.Credentials "<my app>" "<my app id>" "<my secret>"
fbHttpManager = httpManager

instance RenderMessage App FormMessage where
renderMessage _ _ = defaultFormMessage

getHomeR :: Handler Html
getHomeR = do
maid <- maybeAuthId
defaultLayout
[whamlet|
<p>Your current auth ID: #{show maid}
$maybe _ <- maid
<p>
<a href=@{AuthR LogoutR}>Logout
$nothing
<p>
<a href=@{AuthR LoginR}>Go to the login page

|]

main :: IO ()
main = do
man <- newManager def
warpEnv $ App man

当我运行这个程序时,它起作用了 - 我可以登录和退出,Facebook 登录页面表明我正在授予对我的电子邮件地址的访问权限,并且我可以正确获取用户 ID。到目前为止,一切顺利。

但是,我无法弄清楚如何在登录后实际获取用户的电子邮件地址。

有人可以提供一些指导吗?

谢谢!

最佳答案

我以前使用过 Facebook API,据我所知,您得到的只是一个用于发送 Facebook API 请求的访问 token 。要获取已登录用户的电子邮件地址,您可能应该做的是发送 HTTP 请求(或使用 Facebook API 库)来获取用户信息,并使用适当的 fields 参数。更多详情here .

关于facebook - 如何使用 yesod-auth-fb 从 Facebook 登录获取用户的电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20725897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com