2011-11-03 37 views
17

Tôi đang sử dụng mới nhất của Facebook SDK trên iOS 5. Tôi có thể sử dụng SSO để xác thực thành công người dùng, và sau đó tôi cố gắng chia sẻ một liên kết như thế này:thoại đầu tiên sau khi chứng thực thất bại ngay lập tức và đóng hộp thoại

NSString *appId = [[[NSBundle mainBundle] infoDictionary] 
              objectForKey:TSFacebookAppID]; 

NSMutableDictionary* params = 
[NSMutableDictionary dictionaryWithObjectsAndKeys: 
          appId,    @"app_id", 
          [url absoluteString], @"link 
          title,    @"caption", 
          body,     @"description", 
          nil]; 

[facebook dialog:@"feed" andParams:params andDelegate:self]; 

Lần đầu tiên tôi thử điều này, hộp thoại xuất hiện và đóng ngay lập tức, gọi hộp thoại: didFailWithError: phương thức ủy nhiệm lỗi. Lỗi này là:

Error Domain=NSURLErrorDomain Code=-999 "The operation couldn’t be completed. (NSURLErrorDomain error -999.)" UserInfo=0x98f2ab0 {NSErrorFailingURLKey= https://m.facebook.com/dialog/feed?link=http%3A%2F%2Fwww.thescore.com%2Fhome%2Farticles%2F184248&description=Nadal%20pulls%20out%20of%20Paris%20to%20focus%20on%20ATP%20finals&access_token=BAABw00HZB06cBALT57lZCM24N4EOtPpOQeCgl7oLUvbHFR0ZAlwgAbPHQ7HANmlBE0aUKVNDmWNYsEqB0wXq28vm4D18T5hLTVDK3x2WjnVjgIVl75RPoOszSB21f4ZD&caption=Article%20from%20ScoreMobile%20for%20iPhone&app_id=124052647629735&redirect_uri=fbconnect%3A%2F%2Fsuccess&sdk=2&display=touch , NSErrorFailingURLStringKey= https://m.facebook.com/dialog/feed?link=http%3A%2F%2Fwww.thescore.com%2Fhome%2Farticles%2F184248&description=Nadal%20pulls%20out%20of%20Paris%20to%20focus%20on%20ATP%20finals&access_token=BAABw00HZB06cBALT57lZCM24N4EOtPpOQeCgl7oLUvbHFR0ZAlwgAbPHQ7HANmlBE0aUKVNDmWNYsEqB0wXq28vm4D18T5hLTVDK3x2WjnVjgIVl75RPoOszSB21f4ZD&caption=Article%20from%20ScoreMobile%20for%20iPhone&app_id=124052647629735&redirect_uri=fbconnect%3A%2F%2Fsuccess&sdk=2&display=touch }

Tuy nhiên, các nỗ lực tiếp theo để chia sẻ liên kết hoạt động tốt.

+1

Có! Tôi thấy 100% cùng một điều. Triển khai mới, iOS5. Lỗi rất giống nhau. Các nỗ lực tiếp theo hoạt động tốt. Khi khởi động lại ứng dụng, các nỗ lực hoạt động tốt vì phiên vẫn hợp lệ.Nhưng nếu tôi xóa ứng dụng và cài đặt mới, một lần nữa nỗ lực đầu tiên không thành công (rõ ràng là do quá trình xác thực SSO bằng cách nào đó?) –

+0

Đó là cùng một câu chuyện với iOS 7! Ngoại trừ việc xác thực thất bại mọi lúc – tipycalFlow

Trả lời

1

này đã được cố định với SDK 3.0, vì vậy tôi sẽ đóng câu hỏi này. Giải pháp: nâng cấp SDK lên 3.0.

0

Tôi truy tìm nó trở lại như xa như tôi nghĩ rằng tôi có thể trong hộp thoại.m, đó là dòng 414 - dialog.m đang gửi URLRequest cho hộp thoại trong một lần xem web, nhưng xem web rõ ràng là nhận được một lỗi trở lại từ máy chủ của Facebook.

Tôi đã cố gắng gọi mã [facebook thoại: @ "feed" ...] của tôi sau khi trễ 10 giây sau khi xác thực, không có lỗi súc sắc - cùng một lỗi.

Vì vậy, sau đó chỉ dành cho lưới, tôi gọi mã nguồn cấp dữ liệu của tôi từ -dialog: didFailWithError ... sau khi kiểm tra xem đó có phải là lỗi -999 hay không. Nó hoạt động tốt từ cuộc gọi đó. ????

4

Trong FBDialog.m, thay đổi này:

UIWindow* window = [UIApplication sharedApplication].keyWindow; 
if (!window) { 
    window = [[UIApplication sharedApplication].windows objectAtIndex:0]; 
} 

Để này:

UIWindow* window = [[UIApplication sharedApplication].windows objectAtIndex:0]; 

Vấn đề giải quyết! Cho tôi ít nhất.

+0

Tôi nghĩ rằng đây là một vấn đề khác. Tôi đã thấy câu trả lời này trên một chủ đề khác và đã thử nó không có hiệu lực. Lỗi mà chúng tôi thấy ở đây là lỗi hiển thị webview đến từ máy chủ của Facebook (xem lỗi trong nhật ký được đăng bởi áp phích gốc). Hmm, bạn là poster gốc. Hiếu kỳ. –

+0

Sau khi làm việc vào thứ Sáu, giải pháp này không còn hoạt động nữa. – Senior

+4

Tôi bỏ qua lỗi bằng cách thay đổi dòng 413 của FBDialog.m thành: if (! (([Error.domain isEqualToString: @ "WebKitErrorDomain"] && error.code == 102) || error.code == -999)) và bây giờ nó hoạt động. – Senior

1

Cho đến facebook vá SDK của họ, tôi did'nt tìm thấy bất kỳ giải pháp tốt hơn so với cái này:

- (void)dialog:(FBDialog *)dialog didFailWithError:(NSError *)error{ 

    if([error code] == -999){ 
     DLog(@"Error -999 found re-open webview"); 

     [facebook dialog:@"apprequests" 
       andParams:_dialogParams 
      andDelegate:self]; 

    }else{ 
     DLog(@"Error opening facebook dialog : %@", [error description]); 
    } 
} 
+0

cách tiếp cận này dường như không hoạt động vì nó chuyển hướng tôi đến cùng một hộp thoại đăng nhập một lần nữa để nó kết thúc trong một vòng lặp vô hạn –

8

tôi cũng thỉnh thoảng nhận được này -999 NSURLDomainError khi cố gắng để đưa lên cửa sổ facebook bài. Tôi đã lấy chiến lược bỏ qua mã lỗi là đề cập đến người cao tuổi trong các nhận xét.

Lý do tôi không cảm thấy xấu về việc sửa lỗi này là FBLoginDialog thực sự đã bỏ qua lỗi này. Kiểm tra các mã trong github:

https://github.com/facebook/facebook-ios-sdk/blob/master/src/FBLoginDialog.m#L85

Vì vậy, để được cụ thể, đây là những gì WebView của tôi: Phương pháp didFailLoadWithError trông giống như trong FBDialog.m bây giờ:

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 
// 102 == WebKitErrorFrameLoadInterruptedByPolicyChange 
NSLog(@"FBDialog webView didFailLoadWithError:%@ %d",error.domain,error.code); 
if ([error.domain isEqualToString:@"NSURLErrorDomain"] && error.code == -999) 
    return; 

if ([error.domain isEqualToString:@"WebKitErrorDomain"] && error.code == 102) 
    return; 

[self dismissWithError:error animated:YES]; 
} 
+0

Nó hoạt động tốt :) – Bharathi

10

Chỉ cần một bản cập nhật cho mọi người, đó là cuối cùng được chỉ định cho ai đó trên Facebook: https://developers.facebook.com/bugs/168127053284477 - hy vọng nó sẽ được sửa chữa sớm.

Trong khi đó, ai đó đã gửi một yêu cầu kéo trên github với một sửa chữa: https://github.com/facebook/facebook-ios-sdk/pull/436

Hy vọng nó sẽ giúp ai đó, như tôi vẫn còn phải đối mặt với cùng một lỗi ..

+0

Lỗi này vẫn chưa được sửa trong facebook-ios-sdk mới nhất 10 tháng 9 năm 2012. Tôi đã phải chuyển sang một phiên bản cũ hơn (facebook iphone sdk) để có được điều cơ bản này để làm việc. Tại sao họ phải phá vỡ chức năng cốt lõi? – Das

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