我已经完成了所有这里提到(https://www.parse.com/docs/ios_guide#fbusers/iOS)在iOS登录Facebook.
问题是我在che line附近有一个编译错误"使用未解析的标识符PFFacebookUtils"
PFFacebookUtils.initializeFacebook()
在AppDelegate中.我已经正确地将Parse和Facebook Framework导入到我的项目中.在Xcode 6 Beta中是否有一些错误?
自从更新Facebook到v4.0.x和最新的Parse库以来,我的应用程序正在挂起,似乎在尝试登录用户时.
我的堆栈跟踪如下所示:

我之前遇到过类似的问题,在这里回答:调用[PFFacebookUtils initializeFacebook]时解析崩溃 - semaphore_wait_trap
然而,该解决方案不再有效,因为它似乎[PFUser currentUser]已被替换,[PFUser(Private) _getCurrentUserWithOptions:]并且[BFTask(Private) waitForResult:withMainThreadWarning:]它被卡住了.
在我的应用程序中,我将PFUser子类化为一个名为MPLUser的类,并重写了用户方法.不确定这可能与问题有关吗?
+ (MPLUser *)user
{
return (MPLUser *)[PFUser user];
}
Run Code Online (Sandbox Code Playgroud)
一旦开始发生,就无法启动应用程序.但是,我通常设法在锁定开始之前启动应用程序几次.它通常发生在崩溃之后...
我正在使用pod'ParseFacebookUtilsV4'并将所有库更新到最新版本.
更新:
这是来自另一个线程的更多堆栈跟踪,似乎正在尝试登录:

我按以下顺序初始化Parse和Facebook.如果我拨打电话,它会崩溃:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self initDefaults];
[self initialiseApplicationSpecifics];
[self setupParseWithOptions:launchOptions];
[self enableCrashReporting];
[self setupIAPs];
//etc...
}
- (void)initialiseApplicationSpecifics
{
[Flurry setCrashReportingEnabled:YES];
[self registerParseSubclasses];
[ParseCrashReporting enable];
[Parse enableLocalDatastore];
#ifdef MPL
[Parse setApplicationId:@"xxxyyy"
clientKey:@"xxxyyy"];
[Flurry startSession:@"xxxyyy"];
#elif MGM
[Parse setApplicationId:@"yyyxxx"
clientKey:@"yyyxxx"];
[Flurry startSession:@"yyyxxx"];
#endif
}
- (void)setupParseWithOptions:(NSDictionary *)launchOptions …Run Code Online (Sandbox Code Playgroud) 在更新xcode7之后未调用PFFacebookUtils logInInBackgroundWithReadPermissions块,并从此处解析SDK到1.8.5和Facebook SDK 4.6:https://developers.facebook.com/docs/ios/ios9
NSArray *permissions = [NSArray arrayWithObjects:@"email",@"user_friends", nil];
[PFFacebookUtils logInInBackgroundWithReadPermissions:permissions block:^(PFUser *user, NSError *error)
{
if (!user) // The user cancelled the Facebook login
{
NSLog(@"Uh oh. The user cancelled the Facebook login.");
}
else if (user.isNew) // New user (not stored on DB) - User signed up and logged in through Facebook
{
[self handleNewUser];
}
else if (user) // the user is exist at DB
{
// the user is exist at DB …Run Code Online (Sandbox Code Playgroud) 我已升级到ParseFacebookUtilsV4并且我已更新我的登录代码:
[PFFacebookUtils logInInBackgroundWithReadPermissions:FACEBOOK_READ_PERMISSIONS block:^(PFUser *user, NSError *error) {
...
}];
Run Code Online (Sandbox Code Playgroud)
但是,现在我的应用程序短暂切换到Facebook应用程序并返回.它使用原生Facebook应用程序登录,而在设置中仍然有一个有效的iOS Facebook帐户.如何PFFacebookUtils在可用时使v4使用系统Facebook帐户,并且只有在系统帐户不可用时才回退到Facebook应用程序?
ios facebook-ios-sdk parse-platform facebook-sdk-4.0 pffacebookutils