2012-09-26 36 views
17

我在iOS6模擬器上運行Xcode 4.5GM上的Facebook SDK 3.1。我在iOS設置中連接到FB,併成功地使用新的iOS6 FBConnect UI在我的應用程序中連接FB。我有一個訪問令牌,可以看到我的朋友,送應用程序請求,後到我的牆,等等。但是,我每次發起任何形式的FBURLConnection的時間由我看到這個印到我的控制檯:Facebook iOS SDK 3.1:「Error:HTTP status code:400」

Error: HTTP status code: 400 

我進入FB代碼並打印出錯時打印出錯,我得到:

{ 
    body =  { 
     error =   { 
      code = 100; 
      message = "(#100) The parameter 'attribution' is required for the 'mobile_app_install' activity"; 
      type = OAuthException; 
     }; 
    }; 
    code = 400; 
} 

有沒有人知道如何解決這個問題?所有功能似乎都可以工作,但我一直看到這個垃圾郵件我的控制檯。

+0

我甚至無法正確連接。我甚至按照指南在:https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.0-to-3.1/ –

回答

-2

此錯誤反映了服務器上的一個錯誤,該錯誤在3.1發行版發佈後立即修復。此時,此請求不應再有失敗。希望這可以幫助!

+7

我仍然在3.1中看到這個。它發生在應用程序第一次請求權限時(如果我從我的設置中的授權應用程序列表中刪除了FB應用程序)。然而,後續請求仍然有效。這似乎只發生在設備上,而不是在模擬器中。 – Senior

3

盡我所知,這是3.1 SDK中引入的一個錯誤。看着Charles的網絡流量,他們正在嘗試POST到graph.facebook.com/[user id]/activities,但它失敗了。

+0

我在想這是一個新的事情處理他們的跟蹤安裝其新的移動廣告。這需要一個「歸屬」ID來識別與我看到的缺少「歸因」響應相匹配的設備。 – stipe108

+0

有可能是錯誤或別的東西不知道。但我的結論是,對於特定用戶Facebook允許Post僅更新15-20次,那麼它將給出代碼:400錯誤 –

+0

我正在使用3.1 SDK。與查爾斯我發現這個電話負責:http://0-op-w.channel.facebook.com – Valerio

18

會話創建後右做到這一點:

[FBSession setActiveSession:session]; 
+1

高超!它的作品... thanx老兄。 –

+0

感謝人......它的作品完美,爲此+1 ... – DharaParekh

0

這是一樣的我的答案在這裏:Facebook SDK 3.1 - Error: HTTP status code: 400

但它可以幫助人們仍然得到400錯誤。

剛剛發佈3.1 SDK後,Facebook解決了原始問題。

但有些仍然有問題,如果你有這個問題,你應該檢查登錄流程,並看看Facebook的例子,如果你仍然有問題,這可能是一個解決方案的提示。

當我沒有授權獲取我的信息時,我收到了400錯誤。奇怪的是,我得到了一個accessToken,甚至是一個有效的登錄(這是因爲我構建了我的代碼,根據令人愉快的示例提供了幫助,並且在會話狀態打開時我做了有效的登錄)。

FBSessionState只打開一秒鐘,然後它變爲關閉400錯誤。

使用iOS6本地登錄時,您在獲取權限時會收到警報,然後手機會記住24小時內的選擇。但是,如果用戶登錄到Facebook主頁,然後刪除應用程序的權限,則無論您是否重新安裝應用程序,手機都會記住24小時的設置。

我經過幾個小時的調試才發現,因爲我允許從iOS設置中的應用程序,但我無法發佈,因爲我從facebook隱私中刪除了許可,並且警報不會再顯示我無能爲力,只能通過調試工具手動授予我許可權,或等待24小時,以便我可以再次接受Facebook許可警報。

0

我發現,狀態碼400也拋出與FBErrorHTTPError當事情出錯,在定義動作類型字段集Optional Properties,Facebook的=> Open Graph的定義面板內。

在我的情況下,我發佈了一個沒有標記爲isRequired的屬性的操作對象。也請注意isArray選項,並且一般情況下,要正確匹配您發送的內容。

2

經過大量的疑難解答並查看了Stackoverflow上的所有建議後,我得到了這個錯誤400(error.code = 5)的東西解決了。 在我的情況下,解決方案是確保包含在我的startWithGraphPath調用中的params(aka postParams)具有剛好被髮布的內容類型支持的參數。

更具體地說,我使用@「ref」鍵(通常用於跟蹤FB Insights)向我/ feed發送鏈接

刪除@「ref」鍵後,startWithGraphPath成功。

NSMutableDictionary *postParams = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            @"Test NAME field (from ios app)", @"name", 
            @"Test caption", @"caption", 
            @"Test description", @"description", 
            @"http://example.com/test1.html", @"link", 
            @"http://example.com/water.jpg", @"picture", 
            // @"foo", @"ref", // WRONG! 
            nil]; 

[FBRequestConnection startWithGraphPath:@"me/feed" 
          parameters:postParams 
          HTTPMethod:@"POST" 
         completionHandler:^(FBRequestConnection *connection, 
              id result, 
              NSError *error) 

我的activeSession(和所有其他可能的元兇)簽出確定。