使用Accounts.framework的Facebook最佳身份验证流程

注射剂

我已阅读了大量有关ACAccounts.framework此应用程序的信息并将其成功集成到我的应用程序中。

老实说,所有这些教程都没有很好的错误流程以及下一步该怎么做。

我的以下身份验证工作正常:

ACAccountStore *accountStore = [[ACAccountStore alloc] init];
    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
    NSDictionary *options = @{
                              ACFacebookAppIdKey : kPSFacebookKey,
                              ACFacebookPermissionsKey : @[@"email"],
                              ACFacebookAudienceKey : ACFacebookAudienceEveryone};

    [accountStore requestAccessToAccountsWithType:accountType
                                          options:options
                                       completion:^(BOOL granted, NSError *error){
        if (granted) {
            NSArray *accounts = [_currentUser.accountStore
                                 accountsWithAccountType:accountType];
            _currentUser.facebook = [accounts firstObject];                
            dispatch_async(dispatch_get_main_queue(), ^{
                authSuccess(); 
            });
        } else {
            dispatch_async(dispatch_get_main_queue(), ^{
                authFailure(error);
                // Display UIAlertView to make user go to settings and add account?! WHAT?
            });
        }
    }];

如果用户在设置中具有帐户,而我依靠该帐户并认为该用户已登录。

这确实可以按预期工作,但只要获得批准,只要用户在中拥有帐户即可settings否则,我会显示警报以使用户转到settings并添加帐户。我不要那样!

因此,所需的流程是:

  • 如果用户有settings通过ACAccountStoreWORKS提取帐户的帐户
  • 如果用户没有帐户settings->转到facebook应用程序?
  • 如果用户没有facebook应用程序->转到safari facebook登录表单->登录,然后返回到应用程序

我相信Foursquare有这样的流程。

所以我的主要问题是:

  • 我如何实现这样的流程(请参见上文)
  • 我需要那个吗 Facebook iOS SDK
  • 然后可以合并Facebook会话中的凭据并将其ACAccountStore手动添加吗?

谢谢

注射剂

我遇到了这个gist

https://gist.github.com/rsms/4726728

满足以下期望:

  • 如果用户有settings通过提取的帐户ACAccountStore
  • 如果用户没有帐户settings->转到Facebook应用
  • 如果用户没有Facebook应用程序->进入safari Facebook登录表单->输入凭据->自动返回到应用程序

真正很酷的是,我不必手动获取ACAccountStore(iOS系统中的帐户),Facebook SDK可以帮我实现,而我仅依靠Facebook会话(isOpen)。

仍然存在一个问题,就是会话在重新启动应用程序后消失了,这可以通过添加以下方法解决:

[FBSession openActiveSessionWithReadPermissions:nil
                                   allowLoginUI:NO
                              completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {}];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Facebook 进行 Firebase 身份验证

来自分类Dev

最佳做法(最适用于Android):使用Facebook或Google登录名对用户进行身份验证

来自分类Dev

如何使用lambda作为“开发者身份验证身份”来提供自定义身份验证流程?

来自分类Dev

使用OWIN SelfHost和Facebook身份验证

来自分类Dev

使用Facebook OAuth的Apache Shiro身份验证

来自分类Dev

使用Passport与Facebook进行身份验证不起作用

来自分类Dev

使用Facebook的FirebaseUI身份验证不起作用

来自分类Dev

使用Spring Security / Social调试Facebook身份验证

来自分类Dev

使用OWIN SelfHost和Facebook身份验证

来自分类Dev

如何使用python social auth实现facebook身份验证?

来自分类Dev

使用WebAuthenticationCoreManager进行Facebook身份验证的网址是什么

来自分类Dev

使用Node的Passport JS的Facebook身份验证失败

来自分类Dev

Android:使用 Firebase 的 Facebook 身份验证无法启动

来自分类Dev

如何使用 Facebook 令牌进行身份验证?

来自分类Dev

使用Django REST Framework作为Django的身份验证后端

来自分类Dev

使用Nginx和Django Rest Framework的身份验证问题

来自分类Dev

如何在Django REST Framework中使用身份验证

来自分类Dev

如何使用 Postman 对 Django REST Framework 进行身份验证

来自分类Dev

首先使用Facebook进行身份验证,然后使用Google进行身份验证,导致Android版Firebase出现错误

来自分类Dev

使用React Router的服务器端身份验证流程

来自分类Dev

使用MST反应导航5身份验证流程,而不是“切换”

来自分类Dev

了解使用Android和Rest API的OneDrive中的身份验证流程

来自分类Dev

在Django Rest Framework中使用令牌身份验证进行身份验证时,不会更新last_login字段

来自分类Dev

使用Passport和ExpressJS的Facebook身份验证-为什么未调用验证回调?

来自分类Dev

如何使用Facebook API邀请经过身份验证的Facebook用户应用和游戏组?

来自分类Dev

使用Flask-Oauthlib向Facebook进行身份验证时,“来自Facebook的无效响应”

来自分类Dev

使用Facebook令牌进行Stormpath身份验证以获取Facebook ID?

来自分类Dev

使用node.js的iOS Facebook身份验证Passport-facebook-token

来自分类Dev

如何使用Facebook API邀请经过身份验证的Facebook用户应用和游戏组?

Related 相关文章

  1. 1

    使用 Facebook 进行 Firebase 身份验证

  2. 2

    最佳做法(最适用于Android):使用Facebook或Google登录名对用户进行身份验证

  3. 3

    如何使用lambda作为“开发者身份验证身份”来提供自定义身份验证流程?

  4. 4

    使用OWIN SelfHost和Facebook身份验证

  5. 5

    使用Facebook OAuth的Apache Shiro身份验证

  6. 6

    使用Passport与Facebook进行身份验证不起作用

  7. 7

    使用Facebook的FirebaseUI身份验证不起作用

  8. 8

    使用Spring Security / Social调试Facebook身份验证

  9. 9

    使用OWIN SelfHost和Facebook身份验证

  10. 10

    如何使用python social auth实现facebook身份验证?

  11. 11

    使用WebAuthenticationCoreManager进行Facebook身份验证的网址是什么

  12. 12

    使用Node的Passport JS的Facebook身份验证失败

  13. 13

    Android:使用 Firebase 的 Facebook 身份验证无法启动

  14. 14

    如何使用 Facebook 令牌进行身份验证?

  15. 15

    使用Django REST Framework作为Django的身份验证后端

  16. 16

    使用Nginx和Django Rest Framework的身份验证问题

  17. 17

    如何在Django REST Framework中使用身份验证

  18. 18

    如何使用 Postman 对 Django REST Framework 进行身份验证

  19. 19

    首先使用Facebook进行身份验证,然后使用Google进行身份验证,导致Android版Firebase出现错误

  20. 20

    使用React Router的服务器端身份验证流程

  21. 21

    使用MST反应导航5身份验证流程,而不是“切换”

  22. 22

    了解使用Android和Rest API的OneDrive中的身份验证流程

  23. 23

    在Django Rest Framework中使用令牌身份验证进行身份验证时,不会更新last_login字段

  24. 24

    使用Passport和ExpressJS的Facebook身份验证-为什么未调用验证回调?

  25. 25

    如何使用Facebook API邀请经过身份验证的Facebook用户应用和游戏组?

  26. 26

    使用Flask-Oauthlib向Facebook进行身份验证时,“来自Facebook的无效响应”

  27. 27

    使用Facebook令牌进行Stormpath身份验证以获取Facebook ID?

  28. 28

    使用node.js的iOS Facebook身份验证Passport-facebook-token

  29. 29

    如何使用Facebook API邀请经过身份验证的Facebook用户应用和游戏组?

热门标签

归档