为我的应用支持Facebook登录的最佳做法是什么?
我正在考虑现有的集成应用程序与Facebook。 以Pinterest为例,该应用程序即使没有在设备上安装Facebook应用程序也使用iOS本机登录。我也想实现这样的逻辑流程。
看着:
Get if my app is authorized to use facebook [iOS 6, FB SDK 3.2]
https://developers.facebook.com/docs/ios/
https://developer.apple.com/documentation/social/slcomposeviewcontroller
https://developer.apple.com/documentation/accounts
我不清楚如何实施回退流程,应用程序执行以下操作:
如果可以登录设备,请使用它。如果没有,回退到Facebook应用登录,如果不回退到Facebook Safari登录。
答案 0 :(得分:5)
您可以在打开会话时执行此身份验证,如下所示。此枚举FBSessionLoginBehaviorUseSystemAccountIfPresent
将执行如下步骤
如果在#2中失败,它将切换到safari。
[FBSession.activeSession openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
//your code.
}];
枚举常量清楚地解释登录流程,我们可以根据需要选择任何一个。
@discussion Facebook登录授权应用程序执行操作 代表用户,使用用户的Facebook帐户。通常是 Facebook登录将依赖于外部维护的帐户 应用程序,由本机Facebook应用程序,浏览器或 也许是设备本身。这避免了用户进入的需要 他们的用户名和密码直接,并提供最安全的 和用户授权应用程序的最低摩擦方式 与Facebook互动。如果无法进行Facebook登录,请执行以下操作: 可以尝试后退Facebook登录,提示用户 在由。直接托管的Web视图中输入其凭据 应用
FBSessionLoginBehavior
枚举指定是否允许 回退,禁止回退或强制回退登录行为。最 应用程序将使用默认值,尝试正常的Facebook 登录,只有在需要时才会退回。在极少数情况下,它可能是 最好不要完全拒绝Facebook登录,或者 强制退回登录。 * /
typedef enum {
/*! Attempt Facebook Login, ask user for credentials if necessary */
FBSessionLoginBehaviorWithFallbackToWebView = 0,
/*! Attempt Facebook Login, no direct request for credentials will be made */
FBSessionLoginBehaviorWithNoFallbackToWebView = 1,
/*! Only attempt WebView Login; ask user for credentials */
FBSessionLoginBehaviorForcingWebView = 2,
/*! Attempt Facebook Login, prefering system account and falling back to fast app switch if necessary */
FBSessionLoginBehaviorUseSystemAccountIfPresent = 3,
} FBSessionLoginBehavior;
注意:检查文档以了解如何使用FB应用切换应用。然后只有这个枚举才会按预期工作。
答案 1 :(得分:0)
Facebook SDK用于自动执行此操作,但已停止。有关如何使用本机操作系统组件登录Facebook,请参阅this answer。
答案 2 :(得分:-2)
当您将Facebook与本机Facebook应用程序集成时,无需实现登录屏幕。为此,您应该在iOS设备中登录facebook应用程序,只需转到
即可设置 - >实