PFFVideosUtils logInInBackgroundWithReadPermissions:block:打开Facebook应用程序,而不是使用系统帐户

我已经升级到ParseFacebookUtilsV4,我更新了我的login代码:

[PFFacebookUtils logInInBackgroundWithReadPermissions:FACEBOOK_READ_PERMISSIONS block:^(PFUser *user, NSError *error) { ... }]; 

不过,现在我的应用程序切换到Facebook应用程序一会儿又回来了。 它使用本机Facebook应用程序login,而在设置中仍然有一个有效的iOS Facebook帐户。 如何使PFFacebookUtils v4在系统帐户可用时使用系统Facebook帐户,并在系统帐户不可用时才回退到Facebook应用程序?

从ParseFacebookUtilsV4的头文件

PFFacebookUtils.h

/ *! @abstract FBSDKLoginManager提供了configurationlogin行为,默认受众和pipe理Facebook访问令牌的方法。

@returns FBSDKLoginManager使用的PFFacebookUtils 。 * /

 + (FBSDKLoginManager *)facebookLoginManager; 

因此,据说PFFVideosutils使用了“FBSDKLoginManager”的声明,让我们来看看是否可行。 实际上,我们将默认设置为“系统帐户”,这里是代码:

 [[PFFacebookUtils facebookLoginManager] setLoginBehavior:FBSDKLoginBehaviorSystemAccount]; [PFFacebookUtils logInInBackgroundWithReadPermissions:FACEBOOK_READ_PERMISSIONS block:^(PFUser *user, NSError *error) { }]; 

是的,这个代码编译,这个代码工作,只要确保你声明login行为,然后再调用login的东西,最好在你的AppDelegate,当你初始化你的代码库,parsing,parsingFacebook实用程序等。

事实上,为了确保这一点,我只是下载了最新版本的PARSE iOS SDK,它具有相同的function。 这里是你的select,这是来自iOS的Facebook SDK,它提供PFFVideosUtils:

 @typedef FBSDKLoginBehavior enum 

@abstract传递给\ FBSDKLoginManager以指示如何尝试Facebooklogin。

@discussion Facebooklogin授权应用程序代表用户使用用户的Facebook帐户进行操作。 通常,Facebooklogin将依赖于在应用程序之外维护的帐户,本地Facebook应用程序,浏览器或者设备本身。 这样就避免了用户直接input用户名和密码的需求,为用户授权应用程序与Facebook进行交互提供了最安全,最低摩擦的方式。

\ c FBSDKLoginBehavior枚举指定应该尝试login哪个方法。 大多数应用程序将使用默认设置,它会尝试通过Facebook应用程序进行login,并在需要时返回浏览器。

如果使用指定的行为无法完成login,则会在\ c FBSDKErrorDomain和\ c FBSDKLoginUnknownErrorCode的代码中调用完成处理程序时出现错误。 * /

 typedef NS_ENUM(NSUInteger, FBSDKLoginBehavior) { /*! @abstract Attempts log in through the native Facebook app. If the Facebook app is not installed on the device, falls back to \c FBSDKLoginBehaviorBrowser. This is the default behavior. */ FBSDKLoginBehaviorNative = 0, /*! @abstract Attempts log in through the Safari browser */ FBSDKLoginBehaviorBrowser, /*! @abstract Attempts log in through the Facebook account currently signed in through Settings. If no Facebook account is signed in, falls back to \c FBSDKLoginBehaviorNative. */ FBSDKLoginBehaviorSystemAccount, /*! @abstract Attemps log in through a modal \c UIWebView pop up @note This behavior is only available to certain types of apps. Please check the Facebook Platform Policy to verify your app meets the restrictions. */ FBSDKLoginBehaviorWeb, }; 

根据SDK,打开Facebook应用程序是与您的应用程序进行身份validation的首选scheme。 这个行为是由Facebook和他们的SDK定义的,而不是真正的parsing问题。

除非你想添加一大堆自定义代码来直接与iOS系统帐户进行​​交互,否则你将不得不忍受应用程序打开并返回到你的应用程序。 这就是每个人都这样做 …(我知道,有点蹩脚的答案)

如果你想尝试自己,开始寻找

 ACAccountType *facebookAccountType = [[[ACAccountStore alloc] init] accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

Github的叉子parsing库

进去吧,改变你想要的