2016-09-16 19 views
5

Trong ứng dụng của tôi, tôi đang sử dụng facebook SDK để đăng nhập người dùng như thế này:trang trống trong khi đăng nhập với Facebook SDK trên iOS 10

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

Mọi thứ đã được làm việc tốt trên iOS 9, nhưng trên iOS 10 khi bộ điều khiển xem safari được trình bày (quản lý bởi facebook SDK) Tôi nhận được một trang trống ngay lập tức và không có gì xảy ra: Blank Page

Tìm thấy rất nhiều vấn đề liên quan đến trang trống này khi đăng nhập facebook, nhưng luôn liên quan đến phái đoàn sau khi đăng nhập, trường hợp này tôi nhận được trang trống ngay sau khi nhấn nút "đăng nhập bằng facebook".

Bất kỳ ai cũng gặp phải vấn đề tương tự?

Trả lời

3

Tôi nhận được chính xác cùng một sự cố trên Ứng dụng của mình. Cuối cùng tôi đã tìm ra lý do là vì tôi đã trình bày một UIAlertView (như một chỉ số hoạt động) ngay trước khi gọi phương thức đăng nhập FB này với tham số thứ hai "fromViewController" được đặt thành không.

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

Theo thử nghiệm của tôi, nó là tốt để thiết lập fromViewController để nil miễn là bạn đang không xảy ra bất cứ cái nhìn tỉnh táo vào thời điểm đó kể từ khi FB SDK có thể để có được điều khiển xem cha mẹ một cách chính xác bằng cách riêng của mình. Tuy nhiên nếu bạn muốn trình bày bất kỳ cảnh báo nào (mặc dù nó có vẻ không phải là một thiết kế giao diện logic), bạn sẽ phải đặt fromViewController một cách rõ ràng để quá trình đăng nhập FB hoạt động như mong đợi. Đây không phải là vấn đề trước iOS 10 nhưng dường như đã có sự thay đổi nội bộ.

+0

Cảm ơn bạn đã trả lời của bạn, tôi không có bất kỳ UIAlertView được trình bày, nhưng bạn nghĩ rằng đó là một cái gì đó UI liên quan đến việc ngăn trình duyệt tải đúng cách, tôi có đúng không? – joaocdn

+0

Tôi nghĩ rằng điểm là bạn nên vượt qua trong bộ điều khiển xem chính xác cho phương thức đăng nhập FB, bất kể bạn đang trình bày bất kỳ chế độ xem nào khác. Nếu bạn vẫn thấy cùng một vấn đề sau khi bạn đảm bảo rằng bạn vượt qua trong trình điều khiển chế độ xem chính xác, thì có thể bạn cần khắc phục sự cố khác. – WeichengChu

-1

Tôi cũng nhận được lỗi này khi sử dụng FBSDKLoginKit và FBSDKShareKit để đăng nhập và chia sẻ liên kết trong ứng dụng của tôi: Get blank page while log in, share and like with Facebook SDK on iOS 10 with Facebook SDK 4.15.1

+0

Đặt câu hỏi, không phải là câu trả lời cho câu hỏi khác. –

+0

Xin lỗi, nhưng tôi nghĩ rằng đó là cùng một vấn đề, và câu trả lời sẽ giống nhau vì vậy tôi cố gắng làm rõ cho tất cả mọi người về vấn đề này. –

+0

Tôi hiểu rồi.Vì vậy, hãy đăng câu hỏi mới và tham khảo câu hỏi * này * trong liên kết. –

8

sử dụng FBSDKLoginBehaviorWeb:

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

Chà !! FBSDKLoginBehaviorWeb hoạt động, hiển thị hộp thoại cho đăng nhập FB nhưng FBSDKLoginBehaviorBrowser không hoạt động. – JiteshW

0

làm việc này đối với tôi có thể giúp bạn

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

thay vì self sử dụng UIApplication.sharedApplication().keyWindow?.rootViewController

0

Nếu bạn đã cập nhật SDK trong thời gian gần đây thì chỉ cần thêm các phương pháp sau đây trong 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]]; 
} 

Và như đã đề cập trong câu trả lời khác, bạn có thể sử dụng các phương pháp khác mà sẽ luôn luôn mở đăng nhập Facebook trong một Webview như là popover.

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

Giải pháp cho Swift 3 và iOS 10. Sử dụng quan điểm cảnh báo Facebook Đăng nhập

let manager = FBSDKLoginManager() 
    manager.loginBehavior = FBSDKLoginBehavior.web 
    manager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self, handler: { (pResult, pError) -> Void in 
     .... 
    }) 
Các vấn đề liên quan