2012-11-10 23 views
11

Với Facebook iOS SDK 3.1.1, tôi đang thực hiện đăng nhập bằng cuộc gọi này -NSInvalidArgumentException ném từ ACAccountStore khi gọi [FBSession openActiveSessionWithPermissions ...] trên iOS 6.0 và iOS 6.0.1

NSArray *permissions = [[NSArray alloc] initWithObjects: @"email", @"user_birthday", @"user_location", nil]; 

@try { 
    return [FBSession openActiveSessionWithReadPermissions:permissions 
               allowLoginUI:allowLoginUI 
             completionHandler:^(FBSession *session, 
                  FBSessionState state, 
                  NSError *error) { 
              [self sessionStateChanged:session 
                   state:state 
                   error:error]; 
             }]; 
} 
@catch { ... } 

Có trường hợp hiếm khi phương pháp này ném NSInvalidArgumentException với thông báo Access options are not permitted for this account type. The options argument must be nil., điều này được ném từ [ACAccountStore requestAccessToAccountsWithType:options:completion:].

Kiểm tra tài liệu của ACAccountStore của Apple, tôi thấy nhận xét này cho phương pháp đó:.

"Một số loại tài khoản (như Facebook) đòi hỏi một từ điển tùy chọn Phương pháp này sẽ ném một NSInvalidArgumentException nếu từ điển tùy chọn không được cung cấp đối với các loại tài khoản như vậy. Ngược lại, nếu loại tài khoản không yêu cầu từ điển tùy chọn, tham số tùy chọn phải là số không. "

Apple yêu cầu này không phải là ngoại trừ Facebook, nhưng phương pháp này được gọi từ Facebook, vì vậy Có thể đây là lỗi - tại Facebook hoặc iOS 6.0/.1, nhưng tôi không thể tìm thấy bất kỳ thứ gì trên web về vấn đề này.

Bất kỳ ý tưởng nào?

+0

Tôi đã có một crashlog với cùng dấu vết. Bạn đã bao giờ sửa lỗi này chưa ?. Cảm ơn trước! –

+0

Không, hiện tại tôi mới bắt được ngoại lệ và bỏ qua nó. – Kof

+0

Bạn đã giải quyết được sự cố này chưa? – vburojevic

Trả lời

4

Tôi tìm thấy một công việc xung quanh cho lỗi này. Lưu ý rằng lỗi cũng được mô tả ở đây: https://developers.facebook.com/bugs/139251032898548

SDK Facebook không thực hiện kiểm tra rỗng cho giá trị trả về của tài khoảnTypeWithAccountTypeIdentifier. Xem https://github.com/facebook/facebook-ios-sdk/blob/master/src/FBSystemAccountStoreAdapter.m?source=c#L176

Để làm việc xung quanh vấn đề này, bạn có thể làm việc kiểm tra sau đây trước khi thử facebook lgoin:

if ([[[ACAccountStore alloc]init] accountTypeWithAccountTypeIdentifier:@"com.apple.facebook"] == nil) { 
    NSLog(@"Cannot proceed, not facebook account type identifier"); 
    return; 
} 
+0

Nhưng nếu không có kho lưu trữ tài khoản cho Facebook, tôi muốn đăng nhập Facebook thông qua các phương thức khác (đăng nhập một lần, v.v.) thay vì thất bại – user102008

+0

Tôi thấy ngoại lệ này bằng cách sử dụng 3.5.2, kiểm tra: https: //github.com/facebook/facebook-ios-sdk/blob/sdk-version-3.5.2/src/FBSystemAccountStoreAdapter.m#L174 –

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