作为 iOS 上 FaceBook 身份验证的一部分登录我们的网站
Posted
技术标签:
【中文标题】作为 iOS 上 FaceBook 身份验证的一部分登录我们的网站【英文标题】:Logging into our site as part of FaceBook authentication on iOS 【发布时间】:2012-08-10 19:03:51 【问题描述】:当用户点击我们网站上的使用 Facebook 登录按钮时,我们调用:
https://www.facebook.com/dialog/oauth?client_id=xxxxxxx&
redirect_uri=http://xxxxx.com/Account/FBLogin&scope=email,publish_stream
在我们的 FBLogin(字符串代码)方法中,我们做了两件事。首先我们调用:
"https://graph.facebook.com/oauth/access_token?client_id=xxxxxxxxx&
redirect_uri=http://xxxxxx.com/Account/FBLogin&client_secret=xxxxxxxxxxxxx&code=" + code;
然后,如果 Facebook 登录成功,我们将用户登录到我们的网站。
ios 中这个工作流程的等价物是什么?我们基本上想在我们的服务器上对用户进行身份验证,作为 Facebook 身份验证的一部分。所以当 Facebook 验证成功返回时,我们的用户也登录到了我们的系统中。
非常感谢!
【问题讨论】:
【参考方案1】:如果您使用的是 Facebook iOS SDK,则 SSO(单点登录)工作流程更像 javascript SDK 的工作流程,因为用户会看到类似于 JS SDK 的弹出窗口:以 UIWebView、Safari 浏览器或 Facebook 应用程序的形式(取决于用户的设置)。
iOS SDK 最引人注目的功能之一是单点登录 (单点登录)。 SSO 允许用户使用他们的 Facebook 登录您的应用 身份。如果他们已经登录 Facebook iOS 应用 他们的设备,他们不必输入用户名和密码。 此外,您可以从用户那里获得访问他们的权限 Facebook 个人资料信息和社交图谱。
SSO 主要通过将用户重定向到其上的 Facebook 应用来工作 设备。由于用户已经登录 Facebook,他们不会 需要输入他们的用户名和密码来识别自己。他们 将看到具有您的应用要求的权限的身份验证对话框 用于,并将被重定向到您的移动应用程序与适当的 访问令牌。
开发者应注意 Facebook SSO 的行为会略有不同 根据用户设备上安装的内容而有所不同。这是 在某些 iOS 配置中会发生什么:
如果应用在支持多任务处理的 iOS 版本中运行, 如果设备具有 3.2.3 或更高版本的 Facebook 应用程序 安装后,SDK 会尝试在 脸书应用程序。在用户同意或拒绝后,Facebook 应用程序 重定向回调用应用程序,传递访问令牌, 过期,以及 Facebook OAuth 服务器可能的任何其他参数 返回。
如果应用在支持多任务处理的 iOS 版本中运行, 但该设备没有 3.2.3 版的 Facebook 应用程序或 更大的安装,SDK 将在 Safari 中打开 Auth Dialog 移动浏览器。用户授予或撤销授权后, Safari 重定向回调用应用程序。类似于 Facebook 应用程序 基于授权,这允许多个应用程序共享相同的 Facebook 用户 access_token 通过 Safari cookie。
如果应用程序在不支持的 iOS 版本中运行 多任务,SDK使用旧的弹出内联机制 UIWebView,提示用户登录 Facebook 并授予访问权限。 FBSessionDelegate 是您的应用程序应该使用的回调接口 实现:应用程序将调用委托方法 成功登录或注销。阅读 iOS SDK 文档 有关此委托的更多详细信息。
...当用户完成登录或未登录并从“弹出窗口”返回您的应用程序时,您的应用程序必须根据用户是否登录/授权应用程序来决定要做什么(并收到有效的访问令牌)。
请阅读此内容以获取更多信息: https://developers.facebook.com/docs/mobile/ios/build/#implementsso
【讨论】:
以上是关于作为 iOS 上 FaceBook 身份验证的一部分登录我们的网站的主要内容,如果未能解决你的问题,请参考以下文章
Facebook iOS SDK 和护照-facebook 身份验证
Facebook 身份验证 iOS 使用 Storyboard