2012-01-23 79 views
3

我正在使用Facebook的API的ios和我使用的Facebook對話框發佈。Facebook對話框失敗,顯示錯誤:操作無法完成。 (NSURLErrorDomain error -999。)

基本的想法是,我有一個按鈕來張貼,調用一個方法,並詢問您是否登錄立即張貼或執行登錄,然後張貼。當第二種情況發生時,我不能登錄到Facebook後發佈權利,所以我不得不點擊按鈕,再次調用方法,所以我可以發佈。

臉書發給我的錯誤說: 操作無法完成。 (NSURLErrorDomain錯誤-999)。

我在這件事堆在這裏閱讀和它說:

據「基金會常量參考」,錯誤代碼-999意味着「NSURLErrorCancelled」。

描述:

異步加載被取消時返回。 Web Kit框架委託在對加載資源執行取消操作時將收到此錯誤。請注意,如果下載被取消,NSURLConnection或NSURLDownload委託將不會收到此錯誤。適用於iOS 2.0及更高版本。在NSURLError.h中聲明。

問題是爲什麼Facebook發送給我這個,我該如何解決它?

如果更多的代碼是必要的,我可以把它。

在此先感謝。

回答

7

我固定的,這是我改變FBDialog.m忽略錯誤代碼-999喜歡的方式,這

- (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]; 
} 

有趣的是,FBLoginDialog已經忽略這兩個錯誤代碼102和-999,而FBDialog只是忽略102.看看你自己:https://github.com/facebook/facebook-ios-sdk/blob/master/src/FBLoginDialog.m#L85

我不知道這是否是最好的解決方案,但我對此稍微有點自信,因爲另一塊Facebook sdk代碼已經忽略了同樣的錯誤。

+0

謝謝!這真的很有幫助,我也做了同樣的事情,但對我來說似乎很難受。 Neverthless你的答案和你處理的方式似乎更好。非常感謝。 @布萊恩·羅斯坦 –

+0

當然可以。在代碼中看到一個解決方案可能不太瘋狂的證據總是很好的。 –

+0

感謝這幫助我找到我們是否連接到互聯網或不... –

2

好了,好消息是,Facebook的窺視與修復同意:

(以響應FB的bug#168127053284477)


    - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 
    // 102 == WebKitErrorFrameLoadInterruptedByPolicyChange 
- 
             
  
    if (!([error.domain isEqualToString:@"WebKitErrorDomain"] && error.code == 102)) { 
   
+// -999 == "Operation could not be completed", note -999 occurs when the user clicks away before 
+// the page has completely loaded, if we find cases where we want this to result in dialog failure 
+// (usually this just means quick-user), then we should add something more robust here to account 
+// for differences in application needs 
+if (!(([error.domain isEqualToString:@"NSURLErrorDomain"] && error.code == -999) || 
+ ([error.domain isEqualToString:@"WebKitErrorDomain"] && error.code == 102))) { 
      [self dismissWithError:error animated:YES]; 
     } 
    } 
 
+1

謝謝。畢竟,我們並不那麼哈克! –

相關問題