2011-11-28 52 views
11

Khi người dùng cố gắng đăng nhập vào ứng dụng iOS của tôi bằng Đăng nhập một lần của Facebook Connect (SSO), nó không thành công nhiều lần trước khi cho phép người dùng đăng nhập vào ứng dụng. Điều này không xảy ra mỗi lần, nhưng xảy ra lần đầu tiên người dùng cố đăng nhập bằng Facebook.SSO yêu cầu nhiều lần đăng nhập

Các bước để tạo:

  1. Người sử dụng cần có phiên bản mới nhất của ứng dụng Facebook iOS được cài đặt trên iPhone của họ.
  2. Trong đa nhiệm, đảm bảo rằng ứng dụng Facebook và ứng dụng cơ sở của bạn đều bị đóng.
  3. Chạm vào nút Kết nối với Facebook trong ứng dụng cơ sở của bạn.
  4. Thao tác này sẽ mở ứng dụng Facebook của bạn và chuyển hướng trở lại ứng dụng cơ sở mà không có bất kỳ hành động nào.

hành vi dự kiến:

  • (void)fbDidLogin phương pháp nên được gọi đó sẽ xác thực trong ứng dụng cơ sở.

hành vi thực tế:

  • (void)fbDidNotLogin:(BOOL)cancelled được gọi là lần đầu tiên một mình.

Trả lời

0

Bạn chỉ cần làm việc xung quanh tệp của FBConnect API..Chỉ cần xem tệp đó trong tệp Facebook.m có phương thức "authorizeWithFBAppAuth" trong phương pháp này, mã cho "ứng dụng khác đang mở" được viết ..bạn chỉ cần bình luận mã đó và chạy ứng dụng của bạn. Nó sẽ không chuyển hướng bạn đến ứng dụng mặc định của facebook được cài đặt trong thiết bị của bạn.

+0

Thật tuyệt vời khi biết và có thể là những gì tôi phải làm. Tôi hy vọng có một câu trả lời khác, bởi vì nếu người dùng có ứng dụng thì họ có nhiều khả năng đã đăng nhập, imo và sẽ không phải nhập cả thông tin đăng nhập Facebook của họ và sau đó là ok ứng dụng của tôi. –

1

Điểm bắt đầu rất tốt sẽ là this link. Bây giờ bạn có thể tải xuống SDK SDK mới và có thể tích hợp SDK này vào ứng dụng iOS của bạn. Liên kết mô tả từng bước giải pháp. KHÔNG cần sử dụng các phương thức ủy nhiệm đăng nhập như fbdidlogin, v.v.

Bạn có thể kiểm tra thời tiết người dùng đã đăng nhập với sự trợ giúp của sự kiện sessionStateChanged.

- (void)sessionStateChanged:(FBSession *)session 
        state:(FBSessionState) state 
        error:(NSError *)error 
{ 
switch (state) { 
    case FBSessionStateOpen: 
     if (!error) { 
      // We have a valid session 
      NSLog(@"User session found"); 
     } 
     break; 
    case FBSessionStateClosed: 
     NSLog(@"session state closed"); 
     break; 
    case FBSessionStateClosedLoginFailed: 
     [FBSession.activeSession closeAndClearTokenInformation]; 
     break; 
    default: 
     break; 
} 

[[NSNotificationCenter defaultCenter] postNotificationName:FBSessionStateChangedNotification 
                object:session]; 
} 

trong điều khiển điểm của bạn, bạn có thể sử dụng điều kiện sau đây để kiểm tra thời tiết người dùng sẽ được đăng nhập:

if (FBSession.activeSession.isOpen) { 
    // your code here 
} 

Tất cả được mô tả trong các liên kết nhất định.

Các vấn đề liên quan