2012-09-26 4 views
17

Ich verwende das Facebook SDK 3.1 auf Xcode 4.5GM mit iOS6-Simulator. Ich verbinde mich mit dem FB in den iOS-Einstellungen und erfolgreich FB Verbindung in meiner App mit dem neuen iOS6 FBConnect UI. Ich habe einen Zugriffstoken kann meine Freunde sehen, die App-Anfragen, Post an meine Wand senden usw. Aber ich jedes Mal, jede Art von FBURLConnection initiieren gemacht wird, sehe ich auf meine Konsole gedruckt:Facebook iOS SDK 3.1: "Fehler: HTTP-Statuscode: 400"

Error: HTTP status code: 400 

ich ging in den FB-Code und gedruckt, um die reponse, wenn dieser Fehler gedruckt und ich:

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

Wer weiß, wie diese zu lösen? Alle Funktionen scheinen zu funktionieren, aber ich sehe diesen Spam in meiner Konsole.

+0

Ich kann nicht einmal richtig anschließen. Ich habe sogar den Leitfaden bei: https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.0-to-3.1/ –

Antwort

-2

Dieser Fehler spiegelt einen Fehler auf dem Server wider, der kurz nach der Veröffentlichung der Version 3.1 behoben wurde. Zu diesem Zeitpunkt sollten keine weiteren Fehler von dieser Anfrage kommen. Hoffe das hilft!

+7

Ich sehe das immer noch in 3.1. Es tritt auf, wenn die App zum ersten Mal Berechtigungen anfordert (wenn ich die FB-App aus der Liste der autorisierten Apps in meinen Einstellungen gelöscht habe). Nachfolgende Anfragen funktionieren jedoch. Dies scheint nur auf dem Gerät zu passieren, nicht im Simulator. – Senior

3

So gut ich kann sagen, das ist ein Fehler in 3.1 SDK eingeführt. Wenn man sich den Netzwerkverkehr mit Charles anschaut, versuchen sie, an graph.facebook.com/[user id]/activities zu senden, aber es scheitert.

+0

Ich denke, das ist eine neue Sache, die sich mit der Verfolgung von installiert für ihre neuen mobilen Anzeigen. Das erfordert eine "Attributierungs" ID, um das Gerät zu identifizieren, das mit der fehlenden "Attribution" Antwort übereinstimmt, die ich sehe. – stipe108

+0

Möglicherweise liegt ein Fehler vor oder etwas anderes ist nicht bekannt. Aber ich kam zu dem Schluss, dass für den bestimmten Benutzer Facebook ermöglicht Post nur für 15-20 Mal aktualisiert werden, dann wird es Code geben: 400 Fehler –

+0

Ich habe dies mit 3.1 SDK. Mit Charles entdeckte ich diesen Anruf, um verantwortlich zu sein: http://0-op-w.channel.facebook.com – Valerio

18

Unmittelbar nach der Sitzung erstellt wird dies zu tun:

[FBSession setActiveSession:session]; 
+1

hervorragend! es funktioniert ... danke Kumpel. –

+0

danke mann ... es funktioniert perfekt und +1 dafür ... – DharaParekh

0

Dies ist die gleiche wie meine Antwort ist hier: Facebook SDK 3.1 - Error: HTTP status code: 400

Aber es könnte die Menschen immer noch helfen, die 400 Fehler.

Das ursprüngliche Problem wurde von Facebook behoben, gleich nachdem das 3.1 SDK veröffentlicht wurde.

Aber einige haben immer noch Probleme, wenn Sie dieses Problem haben, sollten Sie den Login-Fluss überprüfen, und schauen Sie sich Facebooks Beispiele an, wenn Sie noch Probleme haben, könnte dies ein Hinweis auf eine Lösung sein.

Ich habe den Fehler 400, wenn ich keine Berechtigung habe, um meine Informationen zu erhalten. Das Seltsame ist, dass ich einen accessToken und sogar eine gültige Anmeldung bekomme (das liegt daran, dass ich meinen Code strukturiert habe, mit der Hilfe nach Scrumptious Beispiel und ich habe eine gültige Anmeldung gemacht, wenn der Session Status offen ist).

Der FBSessionState wird nur für eine Sekunde geöffnet und dann wird es mit einem Fehler 400 geschlossen.

Mit iOS6 native Login erhalten Sie die Erlaubnis Alarm, wenn Sie danach fragen, und dann das Telefon erinnern diese Wahl für 24 Stunden. Wenn sich der Benutzer jedoch bei der Facebook-Startseite anmeldet und die Berechtigung für die Anwendung löscht, merkt sich das Telefon diese Einstellung 24 Stunden lang, unabhängig davon, ob Sie die App erneut installieren oder nicht.

Dies habe ich nach einigen Stunden Debugging herausgefunden, da ich die Anwendung von den Einstellungen in iOS zugelassen habe, aber ich konnte nicht posten, und da löschte ich die Erlaubnis von der Facebook-Privatsphäre, und die Warnung würde dort nicht mehr angezeigt Ich konnte nichts anderes tun, als mir per Debug-Tool manuell Berechtigungen zu geben oder 24 Stunden zu warten, damit ich den Facebook-Erlaubnis-Alarm erneut akzeptieren konnte.

0

Ich entdeckte, dass Statuscode 400 auch mit FBErrorHTTPError ausgelöst wird, wenn etwas mit im Feld Aktionstyp definieren fehlschlägt, innerhalb der Facebook => Open Graph Definition Panel.

In meinem Fall habe ich ein Action-Objekt ohne eine Eigenschaft als isRequired markiert. Beachten Sie auch für isArray Option und in der Regel für die richtige Übereinstimmung mit dem, was Sie senden.

2

Nach viel Fehlersuche und Blick auf alle Vorschläge zu Stackoverflow, habe ich diesen Fehler 400 (error.code = 5) gelöst. Die Lösung in meinem Fall war, um sicherzustellen, dass die Params (aka postParams) in meinem startWithGraphPath-Aufruf genau die Params von der Art des Inhalts gepostet, die gebucht wurden.

Genauer gesagt, ich posten einen Link zu mir/Feed mit der @ "Ref" -Taste (in der Regel für die Verfolgung mit FB Insights verwendet).

Nach dem Entfernen der @ "ref" -Schlüssel war startWithGraphPath erfolgreich.

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) 

Meine activeSession (und alle anderen möglichen Täter) ausgecheckt OK.

Verwandte Themen