2016-03-25 7 views
0

Bu çok garip. Facebook'a giriş yapmaya çalışıyorum ve cihazda Facebook uygulaması yüklü değilse her şey yolunda gidiyor. Ama bu uygulama varsa o zaman hiçbir şey olmuyor. Sadece hiçbir şey. Tamamlama bloğu asla çağrılmaz ve oturum açma iletişim kutusu görünmez. Ben de applicationDidFinishLauncing içinde bu kod varPFFacebookUtils oturum açma yöntemleri Facebook uygulaması yüklü değilse hiçbir şey yapmaz

[PFFacebookUtils logInInBackgroundWithReadPermissions:@[@"public_profile"] block:^(PFUser *user, NSError *error) 
{ 
    NSLog(@"Completion"); 

}]; 

: Bu benim çok basit kodudur

[Parse setApplicationId:kPAParseApplicationId clientKey:kPAParseClientKey];  
[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions]; 

ve ben şu yöntemi uyguladık:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    return [[FBSDKApplicationDelegate sharedInstance] application:application 
                openURL:url 
             sourceApplication:sourceApplication 
               annotation:annotation]; 

} 

Ben de not etmek gerek Takip eden: Bazen çok nadiren, yüklü olan uygulama ile bile çalışır. Çalışır ve sonra hiçbir sebep olmadan çalışmayı durdurur. Böyle bir sorunla karşılaştı mı? Teşekkürler!

cevap

0

Bunu anladım. Sorun, Facebook SDK'nın kendisiydi ve düzeltmeyi başardım. Yüklenmekte olan veya olmayan Facebook uygulaması ile ilgisi yoktur. Sorunu izini başardı yüzden

Neyse ki, FBSDKLoginKit ve FBSDKCoreKit açık kaynağıdır. Yani, FBSDKLoginManager, yalnızca Facebook sunucusundan yüklenen etkin bir SDK yapılandırması varsa oturum açmaya izin verir. Eğer değilse, geliştiriciye yardımcı olmak için bazı hata mesajlarını bile kaydetmeden hiçbir şey yapmazsınız. Yani, bazen aktif yapılandırmasına sahip olmasının nedeni nedir? Bunun nedeni, FBSDKURLConnection'un ana çalışma döngüsünde NSURLConnection zamanlamasını yapmamasıdır. Yani, arka plan iş parçacığı üzerinde start yöntemi çağrılırsa NSURLConnection delege yöntemleri çağrılabilir veya çağrılmayabilirler. Ve eğer değilse, yeni bir yapılandırma yüklü değildir ve giriş yapamazsınız. Yani ne sadece böyle FBSDKURLConnection 'ın start yöntemi modifiye edilmiş yaptı:

- (void)start 
{ 
    [_connection scheduleInRunLoop:[NSRunLoop mainRunLoop] 
         forMode:NSDefaultRunLoopMode]; 
    [_connection start]; 
} 

ve şimdi

çalışır