【问题标题】:Check iOS device facebook permissions for my app检查我的应用的 iOS 设备 Facebook 权限
【发布时间】:2013-12-13 02:09:47
【问题描述】:

我想检查是否允许我的应用程序在 iOS 设置中访问 facebook,以便我可以使用不同的标志和 facebook 的 openWithBehaviour 功能进行 facebook 社交登录。 1)

FBSessionLoginBehaviorWithNoFallbackToWebView i.e 
    [session openWithBehavior:FBSessionLoginBehaviorWithNoFallbackToWebView
                completionHandler:^(FBSession *session,
                                    FBSessionState status,
                                    NSError *error) {
                    // Respond to session state changes,
                    // ex: updating the view
                    [_self sessionStateChanged:session state:status error:error];
                }];

如果我的应用在 Facebook 和 iOS 设置中未获得许可 2)

FBSessionLoginBehaviorUseSystemAccountIfPresent i.e
    [session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent
                completionHandler:^(FBSession *session,
                                    FBSessionState status,
                                    NSError *error) {
                    // Respond to session state changes,
                    // ex: updating the view
                    [_self sessionStateChanged:session state:status error:error];
                }]; 

那么是否可以在设置中检查我的应用是否被用户拒绝许可?任何帮助,建议都非常感谢。 (我想要这个,因为在 iOS 6 设备上,如果用户在 iOS facebook 设置中拒绝了我的应用程序的权限,那么 facebook 登录回退被中断)。

【问题讨论】:

    标签: ios facebook facebook-login


    【解决方案1】:

    为什么在拨打电话之前不访问[FBSession activeSession]?有

    @property (readonly, copy) NSArray *permissions;
    

    @property (readonly) FBSessionState state;
    

    在调用 Facebook SDK 登录之前进行检查。 NSArray permissions 包含 NSStrings,因此您可以轻松检测会话允许执行的操作。

    【讨论】:

    • 首先,“感谢您的回复”。我的问题不在于会话创建和创建会话时请求的 facebook 权限。我想检查用户是否已禁用我的应用程序访问 iOS 设备 Facebook 帐户(即设置>Facebook>选择应用程序>“关闭”),然后当用户尝试使用 Facebook 登录应用程序时,iOS 会强制他/她去更改应用程序设置(设置>Facebook>选择应用程序>“打开”),很多人都不知道,所以他们最终可能不会使用我的应用程序的Facebook登录。
    • 所以我想在用户在我的应用中按下 Facebook 登录之前,在 Settings>Facebook>Myapp 中检查我的应用状态是“开启”还是“关闭”,以便我可以相应地创建会话。
    • 首先,当使用 Facebook SDK 时,用户可能也通过 Facebook 应用程序或 Safari 登录,您可以检测用户是否使用 Social.framework(可从 iOS6 获得)允许该应用程序,但是我想这会有点棘手。我宁愿使用活动会话,因为无论如何,如果它不可用,你就不能用 Facebook 做很多事情。
    • 非常感谢您的帮助,我也会尝试使用 FBSession。
    【解决方案2】:

    我解决了这个问题:

    [accountStore requestAccessToAccountsWithType:facebookAccountType
                                                      options:options completion:^(BOOL granted, NSError *e) {
                                                          if (granted) {
                                                             NSlog(@"Permission granted");
                                                              // everything is fine i.e, facebook account is created in iOS device settings and permission is given to your app to use facebook information.
    
                                                              //call facebook login using openWithReadPermissions function of facebook SDK or openWithBehaviour with FBSessionLoginBehaviorWithUseSystemAccountIfPresent
    
                                                          }
                                                          else
                                                          {
                                                              NSLog(@"Permission     rejected");
                                                              NSLog(@"Facebook error     details: %@",e);
    
                                                              if ([e code] ==     ACErrorAccountNotFound) {
                                                                      //This means user has not created facebook account in ios settings.
    
                                                              }
                                                              else if ([e code]== 7 || e==nil){
                                                                      //This means user has denied permission for your app in iOS device facebook settings. So if user tries for social login using facebook then you can call openWithBehaviour facebook SDK function with FBSessionLoginBehaviorWithNoFallbackToWebView to manually give fall facebook fallback.
                                                              }
                                                          }
                                                      }];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      相关资源
      最近更新 更多