iOS 问题中的 Facebook 单点登录

Posted

技术标签:

【中文标题】iOS 问题中的 Facebook 单点登录【英文标题】:Facebook single sign on in iOS issue 【发布时间】:2011-09-01 01:56:53 【问题描述】:

我刚刚在 Facebook 上运行单点登录的演示应用程序,我得到以下结果:

而我想要的其实是这样的:

我希望它不显示为 Web 视图,我该怎么做?

【问题讨论】:

【参考方案1】:

请在此处查看我的回答(回答了这个问题):

FaceBook API, login in-app

还请注意我的警告。 OAuth 旨在在您的应用程序外部进行身份验证 - 但在这种情况下,您可以使其在内部工作(但它违反了 OAuth 的核心原则)。

【讨论】:

您说使用这种方法不会记住用户凭据,这意味着什么?另外,为什么所有其他应用都进行应用内身份验证? 我认为用户凭据会被记住 - 如果您在 fbDidLogin 方法中实现访问令牌的保存(我意识到这与我在另一篇文章中所说的相反)。对于另一项 - Facebook 已明确表示首选方式是在应用程序之外执行 OAuth。我怀疑他们将来会放弃对应用内登录的支持,但这总是有可能的。【参考方案2】:

当应用程序请求授权或登录时,应用程序会通过浏览器(如第二张图片所示)获取用户的登录信息,或者如果您安装了 Facebook 应用程序,则从 Facebook 应用程序获取用户的登录信息。您似乎安装了 Facebook 应用,因此该应用会自动从该应用中提取用户信息。

然后,对于用户使用的任何新应用,Facebook 会与用户一起验证用户是否允许该应用请求的功能。

由于您的设备从 Facebook 应用程序中提取了登录信息,因此不使用电子邮件/密码屏幕,并且首先显示权限屏幕。一旦您允许这些功能,当您再次为同一用户启动应用程序时,您应该不会再次看到该屏幕。

【讨论】:

【参考方案3】:

修改你的 Facebook.m

- (void)authorize:(NSArray *)permissions 
  self.permissions = permissions;

  // with both options NO, authorization always happens in-app
  [self authorizeWithFBAppAuth:NO safariAuth:NO];

【讨论】:

以上是关于iOS 问题中的 Facebook 单点登录的主要内容,如果未能解决你的问题,请参考以下文章

iOS - Facebook 单点登录 - 从我的视图控制器

在 Facebook IOS SDK 中禁用单点登录 (SSO)

如何使用 facebook ios sdk for iphone 实现单点登录 (SSO)

使用单点登录对用户进行身份验证时,Facebook iOS Safari“无法打开页面错误”

Facebook 单点登录 (SSO) 停止授权现有 iPhone 应用程序

单点登录方案[学习]