PFFacebookUtils logInInBackgroundWithReadPermissions:block:打开Facebook应用而不是使用系统帐户

时间:2015-08-16 09:36:43

标签: ios parse-platform facebook-ios-sdk facebook-sdk-4.0 pffacebookutils

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

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

然而,现在我的应用程序短暂切换到Facebook应用程序并返回。它使用原生Facebook应用程序登录,而在设置中仍然有一个有效的iOS Facebook帐户。如果PFFacebookUtils v4在可用时使用系统Facebook帐户,如何在系统帐户不可用时才回退到Facebook应用程序?

3 个答案:

答案 0 :(得分:6)

来自ParseFacebookUtilsV4的头文件

PFFacebookUtils.h

...

  

/ *! @abstract FBSDKLoginManager提供了配置方法   登录行为,默认受众和管理Facebook访问令牌。

     

@returns由FBSDKLoginManager使用的实例   PFFacebookUtils。 * /

+ (FBSDKLoginManager *)facebookLoginManager;

因此,据说," FBSDKLoginManager"由PFFacebookutils使用,让我们看看它是否有效。事实上,我们将默认设置为"系统帐户",...这里是代码:

[[PFFacebookUtils facebookLoginManager] setLoginBehavior:FBSDKLoginBehaviorSystemAccount];

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

是的,此代码编译,此代码有效,只需确保在调用登录内容之前声明登录行为,最好在初始化代码库,Parse,Parse Facebook Utilities等时在AppDelegate中声明。

事实上,为了确保这对您有用,我刚刚下载了最新版本的PARSE iOS SDK,它具有相同的功能。以下是您的选择,这是来自Facebook SDK for iOS的PFFacebookUtils:

@typedef FBSDKLoginBehavior enum
  

@abstract传递给\ c FBSDKLoginManager以指示Facebook如何   应该尝试登录。

     

@discussion Facebook登录授权应用程序执行操作   代表用户,使用用户的Facebook帐户。通常是   Facebook登录将依赖于外部维护的帐户   应用程序,由本机Facebook应用程序,浏览器或   也许是设备本身。这避免了用户进入的需要   他们的用户名和密码直接,并提供最安全的   和用户授权应用程序的最低摩擦方式   与Facebook互动。

     

\ c FBSDKLoginBehavior枚举指定方法应该使用哪个日志   被尝试。大多数应用程序将使用默认值,即尝试   通过Facebook应用程序登录并返回浏览器if   需要的。

     

如果使用特定行为无法完成登录,则   将使用\ 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,
};

答案 1 :(得分:0)

打开Facebook应用程序是根据SDK对您的应用进行身份验证的首选方案。这种行为是由Facebook及其SDK定义的,而不是真正的Parse问题。

除非您想直接添加大量自定义代码与iOS系统帐户进行​​交互,否则您必须使用应用程序打开并返回到您的应用程序。 多数人如何做到这一点 ......(我知道,有点蹩脚的回答)

如果您想尝试自己,请开始研究

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

答案 2 :(得分:-3)

来自Github的Fork Parse库

进入它,改变你想要的任何东西......