2016-09-16 10 views
5

w moim app używam facebook SDK, aby zalogować się użytkownikowi takiego:Pusta strona podczas logowania się z Facebooka na iOS SDK 10

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
    [login logInWithReadPermissions: @[@"public_profile", @"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
... 
} 

wszystko szło dobrze na iOS 9, ale na iOS 10, gdy kontroler widoku Safari jest prezentowany (zarządzany przez Facebook SDK) Od razu otrzymuję pustą stronę i nic się nie dzieje: Blank Page

Znalazłem wiele problemów dotyczących tej pustej strony na Facebooku, ale zawsze związane z delegowaniem po zalogowaniu, w w tej sprawie otrzymuję pustą stronę zaraz po naciśnięciu przycisku "zaloguj się na Facebooku".

Ktoś przeszedł przez ten sam problem?

Odpowiedz

3

Mam dokładnie ten sam problem w mojej aplikacji. W końcu doszedłem do wniosku, że powodem jest to, że prezentowałem UIAlertView (jako wskaźnik aktywności) tuż przed wywołaniem tej metody logowania FB z drugim parametrem "fromViewController" ustawionym na zero.

- (void)logInWithReadPermissions:(NSArray *)permissions 
      fromViewController:(UIViewController *)fromViewController 
        handler:(FBSDKLoginManagerRequestTokenHandler)handler 

Według mojego testu, to jest w porządku, aby ustawić fromViewController do zera, tak długo jak nie przedstawiając żadnego alertu widoku w czasie od FB SDK jest w stanie uzyskać sterownik Zobacz główne właściwie sama. Jeśli jednak chcesz wyświetlić dowolny widok alertu (choć nie jest to logiczny projekt interfejsu użytkownika), musisz jawnie ustawić obiekt fromViewController, aby proces logowania do FB działał zgodnie z oczekiwaniami. Nie jest to problemem przed iOS 10, ale najwyraźniej coś się zmieniło wewnętrznie.

+0

Dziękuję za odpowiedź, ja nie mam żadnych UIAlertView prezentowane, ale uważasz, że jest coś UI -związane z tym, że przeglądarka nie ładuje się poprawnie, czy mam rację? – joaocdn

+0

Myślę, że chodzi o to, że należy przekazać poprawny kontroler widoku do metody logowania FB, bez względu na to, czy prezentujesz jakiekolwiek inne widoki. Jeśli nadal widzisz ten sam problem po upewnieniu się, że przekazałeś prawidłowy nadrzędny kontroler widoku, może być coś jeszcze, co musisz naprawić. – WeichengChu

-1

ja również uzyskać ten błąd przy użyciu FBSDKLoginKit i FBSDKShareKit się zalogować i udostępnić łącze w mojej aplikacji: Get blank page while log in, share and like with Facebook SDK on iOS 10 with Facebook SDK 4.15.1

+0

Zadaj pytanie, a nie odpowiedź na inne pytanie. –

+0

Przepraszam, ale myślę, że to ten sam problem, a odpowiedź będzie taka sama, więc staram się wyjaśnić każdemu problem. –

+0

Rozumiem.W związku z tym opublikuj nowe pytanie i podaj * to * pytanie w linku. –

8

użycie FBSDKLoginBehaviorWeb:

FBSDKLoginManager *loginMgr = [[FBSDKLoginManager alloc] init]; 
loginMgr.loginBehavior = FBSDKLoginBehaviorWeb; 
[loginMgr logInWithReadPermissions 
+0

Wow !! Działa FBSDKLoginBehaviorWeb, pokazuje okno dialogowe logowania FB, ale FBSDKLoginBehaviorBrowser nie działa. – JiteshW

0

tej pracy dla mnie mogą pomóc

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
    [login logInWithReadPermissions: @[@"public_profile", @"email"] fromViewController:UIApplication.sharedApplication().keyWindow?.rootViewController handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
... 
} 

zamiast self użyj UIApplication.sharedApplication().keyWindow?.rootViewController

0

Jeśli zaktualizowane SDK w ostatnich czasach to po prostu dodaj następującą metodę w appdelegate:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options 
{ 
return [[FBSDKApplicationDelegate sharedInstance] application:app 
                 openURL:url 
              sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
                annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; 
} 

I jak wspomniano w innym odpowiedź można stosować alternatywną metodę, która będzie zawsze otwarty login Facebook w przeglądanie jako popover.

FBSDKLoginManager *loginMgr = [[FBSDKLoginManager alloc] init]; 
loginMgr.loginBehavior = FBSDKLoginBehaviorWeb; 
2

rozwiązanie dla Swift 3 i iOS 10. Użyj Facebook Login alert widoku

let manager = FBSDKLoginManager() 
    manager.loginBehavior = FBSDKLoginBehavior.web 
    manager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self, handler: { (pResult, pError) -> Void in 
     .... 
    }) 
Powiązane problemy