我正在使用 Facebook 身份验证来证明我的客户端软件(iOS 原生)代表某个 FB 用户行事。但是,我的客户端如何向我的服务器证明这一点,它有自己的登录方案。我猜它需要将 FB access_token 传递给我的服务器,以便我的服务器可以查询 Facebook 以获取用户身份?
或者,有没有办法让 Facebook 存储我自己的访问凭证(我现有注册系统的用户名 + 密码)?那么,在 Facebook 登录后,我的客户会从 Facebook 获取它的用户名和密码并使用它来登录我的系统?
最佳答案
好的,这是我对同一问题的务实解决方案。
您authenticate your iOSApp with facebook .这会给你一个 access_token 然后你可以 get the user's facebook id (fb_id) from facebook .
您现在想要使用此身份验证来验证对与 iOSApp (yourService) 相关的某些服务的请求。
发送 fb_id 和 access_token 使用您对 yourService 的安全请求(例如使用 https)。
yourService 然后使用 fb_id 和 access_token 进行任意社交图调用,例如:
https://graph.facebook.com/ fb_id ?field=name&access_token= access_token
如果 ,这个调用将返回一个适当的错误。 access_token 无效或不匹配 fb_id 因此 yourService 现在可以根据返回值满足或拒绝请求。
yourService 和 iOSApp 可以根据 access_token 的权限和状态读取或修改 FB 图,但如果您只是想在用户已经通过您的 iOSApp 进行身份验证时使用 yourService 进行身份验证,则以上就是您所需要的。
关于 access_token 的传输,FB 政策可能存在一些问题,但只要您使用 https 进行传输,它就与 iOSApp 和 Facebook 之间的交换一样安全。
关于facebook - 如何将 Facebook 单点登录集成到现有的用户/密码登录方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10594542/