簡體   English   中英

發布狀態更新時,ios-Facebook SDK 3.0錯誤5

[英]ios-Facebook SDK 3.0 Error 5 When Posting Status Update

我正在嘗試使用新的(測試版)facebook ios sdk 3.0在應用程序中添加facebook集成。 我只想將狀態更新發布到Facebook。 我使用FBLoginView登錄到Facebook。 我按照Facebook上的指示將我的應用ID放在了plist中。 我輸入了一些代碼以發布到Facebook。

(void)viewDidLoad
{
[super viewDidLoad];
NSArray *perms;
perms = [NSArray arrayWithObjects:@"status_update", nil];
FBLoginView *loginview = 
[[FBLoginView alloc] initWithPermissions:perms];

loginview.frame = CGRectOffset(loginview.frame, 5, 5);
loginview.delegate = self;

[self.view addSubview:loginview];
// Do any additional setup after loading the view, typically from a nib.

}

- (IBAction)poststatus:(UIButton *)sender {
NSString *message = [NSString stringWithFormat:@"Test staus update"];

[FBRequestConnection startForPostStatusUpdate:message
                            completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

                                [self showAlert:message result:result error:error];

                            }];
}
- (void)showAlert:(NSString *)message
       result:(id)result
        error:(NSError *)error {

NSString *alertMsg;
NSString *alertTitle;
if (error) {
    alertMsg = error.localizedDescription;
    alertTitle = @"Error";
} else {
    NSDictionary *resultDict = (NSDictionary *)result;
    alertMsg = [NSString stringWithFormat:@"Successfully posted '%@'.\nPost ID: %@", 
                message, [resultDict valueForKey:@"id"]];
    alertTitle = @"Success";
}

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:alertTitle
                                                    message:alertMsg
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
[alertView show];
}

奇怪的是,此代碼一次運行。 首次驗證用戶身份后,我可以成功發布一個狀態更新。 此后,所有后續嘗試都將失敗,並顯示FBiOSSDK錯誤5(在控制台中,錯誤:HTTP狀態代碼:400)。 解決此問題的唯一方法是從Facebook帳戶中刪除該應用程序,然后重新進行身份驗證。 我不確定是什么問題。 我在網上尋找解決方案,但找不到任何東西。 如果有人知道如何解決此問題,請告訴我。 謝謝

com.facebook.sdk錯誤5在使用Facebook iOS sdk時總是令人煩惱。 大多數情況下,控制台附帶附加錯誤:HTTP狀態代碼:400。 它認為Facebook iOS sdk中存在一個錯誤,該錯誤會隨機產生此錯誤。 我認為此錯誤是由於某些特定原因而發生的,而SDK在發生錯誤時並未提供實際的錯誤原因。

幾種可能的原因

  • sdk中的每個請求都由完成塊來完成,而該塊實際上是作為completionHandler中的參數傳遞的。 當塊進行中並發出另一個請求時,會發生此錯誤。 一個簡單的示例可能是:如果您已針對某個按鈕操作發出了書面要求在Facebook上發帖(startForPostStatusUpdate::)。 在單按鈕上點擊它會很好,但是如果您在按鈕上雙擊,它將拋出此錯誤com.facebook.sdk錯誤5

  • 如果您在當前會話未打開時嘗試發布。 例如,一旦使用Facebook登錄,然后殺死該應用程序,然后重新打開,然后嘗試在Facebook上共享,結果-> com.facebook.sdk錯誤5。在這種情況下,嘗試使用重新打開會話

  • Facebook不允許重復發布相同的狀態,他們認為這可能是垃圾郵件,例如,如果您嘗試更新狀態並且對字符串進行了硬編碼,則說@“這是測試狀態更新”,您將再次冒充您。然后再次。 經過5到10次嘗試,他們將不再允許您執行任何操作。 導致com.facebook.sdk錯誤5.如果是這種情況,則應更改狀態字符串並嘗試更新。

  • Facebook為特定用戶定義了使用sdk發布狀態的限制。 例如,如果您嘗試更新狀態並且已經完成,則說15至20個狀態更新。 他們不會讓您做更多操作。結果-> com.facebook.sdk錯誤5。在這種情況下,請嘗試從您的Facebook帳戶取消對該應用程序的授權並重新授權,或者嘗試使用其他Facebook帳戶

看來這個問題可能沒有答案。 我已經檢查了SDK附帶的FB示例,在這些示例中,也會發生相同的錯誤。 因此,這意味着幾次狀態更新(15-20)之后,Facebook達到了該特定用戶的限制。 如果您注銷該用戶並以其他用戶身份登錄,則可以成功發布。

如果我發現任何擴展名來限制設置,我會回復。 此外,Facebook不允許發布相同的帖子。

使用代理!

FB ios SDK只是對graph.facebook.com / ....?access_token = .....的HTTP請求的包裝。

因此,您可以輕松地復制請求或使用HTTP代理查看真實的服務器答案(這不是錯誤5!)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM