我已升级到ParseFacebookUtilsV4,我已经更新了我的登录代码:
[PFFacebookUtils logInInBackgroundWithReadPermissions:FACEBOOK_READ_PERMISSIONS block:^(PFUser *user, NSError *error) {
...
}];
然而,现在我的应用程序短暂切换到Facebook应用程序并返回。它使用原生Facebook应用程序登录,而在设置中仍然有一个有效的iOS Facebook帐户。如果PFFacebookUtils
v4在可用时使用系统Facebook帐户,如何在系统帐户不可用时才回退到Facebook应用程序?
答案 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库
进入它,改变你想要的任何东西......