2013-08-02 10 views
5

Ich mag die Benutzer mit der Fähigkeit, Geld zu ihren Facebook-Freunden über unsere App (ExVO) durch die Mittel des Sendens eine URL auf die Einladung zu senden Seite über Facebook.Facebook senden Dialog mit API Fehlercode: 100 (‚Link‘ ist ungültig)

Ich verwende den ‚Senden‘ Facebook-Dialog (mit einer Umleitung auf die Facebook-Webiste). Die genaue URL ich Umleiten des Benutzers ist (to Feld redigiert wurde):

https://www.facebook.com/dialog/send?app_id=637466739616439&description=You+can+create+an+Exvo+Account+to+accept+this+money+transfer.&display=page&link=https%3A%2F%2Fwww.exvo.com%2Finvitations%2F9fb77bda665f0ae8f58843daec80a29b&name=Pawe%C5%82+Go%C5%9Bcicki+would+like+to+send+you+0.01+EUR&picture=https%3A%2F%2Fthemes.exvo.com%2Fstylesheets%2Fimages%2Fcustom_images%2Flogo.png&redirect_uri=https%3A%2F%2Fwww.exvo.com&to=username

Diese mich präsentieren mit einem Facebook ‚Senden‘ Dialog. Wenn ich eine benutzerdefinierte Nachricht ein und drücken Sie auf ‚Senden‘, ich bin mit diesem Fehler dargestellt:

API Error Code: 100 
API Error Description: Invalid parameter 
Error Message: 'link' is invalid. 

Der Link param (aus der obigen URL extrahiert und decodiert), ist dies:

https://www.exvo.com/invitations/9fb77bda665f0ae8f58843daec80a29b 

die ist eine gültige URL und gibt eine ordnungsgemäße 200-Antwort zurück. Mit Hilfe des Facebook-Debugger kann ich sehen, dass die bereitgestellte URL generiert keine Fehler:

https://developers.facebook.com/tools/debug/og/object?q=https%3A%2F%2Fwww.exvo.com%2Finvitations%2F9fb77bda665f0ae8f58843daec80a29b

Nur Warnungen über gefolgert Eigenschaften (ich habe diejenigen in einem Punkt auch hinzugefügt, aber es hat nicht geholfen).

Beachten Sie auch, dass ab und zu (wie 1 in 10), wenn ich auf "Senden" klicke, die Nachricht ankommt und ich keine Fehler sehe, was sie noch seltsamer macht.

Warum geschieht dieser Fehler? Was mache ich falsch?

+0

Ich habe das gleiche Problem - ich dachte, dass das Problem vielleicht war, dass meine Links auf die gleiche Canvas-URL zurückgingen, von der sie gepostet wurden, aber die Änderung schien keinen Unterschied zu machen. Die Dinge haben heute ein bisschen früher geklappt, aber die letzte Stunde ist gebrochen (ich kann zum Beispiel nicht mal eine Verbindung zu yahoo.com herstellen). Ich vermute, das könnte nur sein, "ein Code ist kaputt und niemand weiß oder kümmert sich so sehr darum". :/ – mgkimsal

+0

Ich denke, ich habe es an meinem Ende gelöst - ich hatte eine URL wie Ihre: foo.com/path/to/code/id/6/rand/ab2e9c8dfb27385 Ich hatte die Rand-Teil zum Handeln hinzugefügt als Cache-Buster, und anscheinend mochte es diese wirklich langen ID-Strings nicht. Diese loszuwerden schien zu helfen, da die Dinge funktionieren. Andere Dinge, die ich überprüfte - das og. Meta-Tags per Facebook-Debugger - die URL-Adresse, ich stellte sicher, dass es keine Weiterleitung gab. Und ich habe die fehlenden Felder (Bild, Beschreibung, etc) hinzugefügt. Das waren nur 'Warnungen', aber das alles zu vervollständigen und die lange Schnur zu verlieren, gab mir einen funktionierenden 'Send'. Viel Glück! – mgkimsal

Antwort

0

Dadurch könnte die es für mich fixiert folgende:

  • kürzer token (diese Zeichenfolge im link param: 9fb77bda665f0ae8f58843daec80a29b, die 32 Zeichen lang war, jetzt auf 16 ist), wie empfohlen von gkimsal
  • October 2013 breaking changes akzeptieren Ich musste OpenGraph-Tags in die Seite einfügen und die name, description und picture_uri Parameter, die ich beim Erstellen des Dialogfelds "Senden" enthielt, umleiten. uri

Jetzt muss Facebook vor dem Anzeigen des Dialogfelds Senden an den Benutzer meine Seite abrufen, um die Daten (aus OG: title, description und image) abzurufen, die dem Benutzer einen entsprechenden Dialog anzeigen. Ich denke, das hat mir in meinem Fall am meisten geholfen.

+0

Aber die Metatags funktionieren nicht für mich. Immer noch das gleiche Problem. Bitte rate mir .. – user2003356

2

Ich habe etwas komisches herausgefunden, das Gleiche ist heute auf der Seite passiert, die ich verwalte, das Problem schien zu sein, dass der Link das Wort facebook enthält, also versuche [facebook, fb oder f if it ein ganzes Wort] aus Ihrer uRL ist, soll es funktionieren, ich hatte eine uRL wie open/ID/facebook/ und den einzigen Weg, es funktionierte, als ich es zu fopen/ID/ geändert, die dumm aussieht!

Also in Ihrem Fall sein, kann dies das Problem ist: https://www.exvo.com/invitations/9fb77bda665f0ae8f58843daec80a29b

Versuchen Sie, Ihre URL zu etwas ohne fb oder Facebook oder etwas ähnliches zu ändern.

+0

Vielen Dank für Ihre Antwort, aber das ist es leider nicht. Ich habe es in etwas völlig anderes geändert (aber den Domainnamen dort gelassen) und es führte immer noch zu dem gefürchteten 100 Fehler. –

0

hatte ich dieses Problem des Send nur Dialog. Ich verwendete dynamische Querystring-Parameter für eine gemeinsame URL. Die allgemeine URL wurde von Facebook gekratzt, aber jede Iteration der allgemeinen URL und der Querystring-Parameter würde zu diesem Fehler führen, wenn Facebook diese genaue URL zuvor nicht gekratzt hätte.

Ich habe das Problem behoben, indem ich Facebook gezwungen habe, die URL vor zu scratzen. Ich versuche, es über den FB UI Send Dialog zu senden. Verwenden Sie die FB API graph.facebook.com mit der URL im id Parameter und ein scrape Parametersatz true geschrieben zu schlagen.

Wie so:

FB.api('https://graph.facebook.com/', 'post', { 
    id: '[URL]', 
    scrape: true 
}, function(response) { 
    FB.ui({ 
     method: 'send', 
     name: '[name]', 
     picture: '[Picture URL]', 
     link: '[URL]', 
     description: '[description]' 
    }); 
}); 

antwortete ich auch mit dieser Lösung für das gleiche Problem here.

8

Dies war in Ihrem Fall möglicherweise nicht das Problem, sondern nur für die Auffindbarkeit: Stellen Sie sicher, dass die freigegebene URL im Internet öffentlich verfügbar ist (d. H. Nicht in Ihrer Firewall oder auf einem lokalen Computer). Der FB muss Ihre URL besuchen, um seine Authentizität zu überprüfen.

+0

Ja natürlich :) –

+0

das deutete mich an die richtige Antwort. Ich musste https zu http in meinem Link ändern, da ich HTTPS auf meiner Website tatsächlich noch nicht eingerichtet habe, so dass Facebook es wahrscheinlich nicht überprüfen konnte. – parliament

+0

doh! Ich benutze localhost ... Ich bin kein kluger Mann> _ < – Kraiden

2

Wie mpcabd oben hingewiesen hat, stellen Sie sicher, alles mit fb, fbdev, Facebook in der URL zu entfernen, denn wenn ich es tat, löste es das Problem für mich. Es ist wahrscheinlich ein Bug oder eine Sicherheitsmaßnahme von Facebook. Sie müssen immer eine redirect_uri mit dem Link übergeben und versuchen, einen Titel zu erwähnen.

Auch Ihr Link und redirect_uri muss innerhalb Ihrer Domain sein, die Sie für die App bereitgestellt haben. Ex: Wenn Ihre App-Domain in App-Einstellungen http://stackexchange.com ist, können Sie keinen Link teilen wie https://stackoverflow.com/apps/php/fbsdk/etc/login.php sagen, stattdessen müssen Sie http://stackexchange.com/apps/php/etc/login.php den Link teilen, die für mich gearbeitet hat

echo "<a href='https://www.facebook.com/dialog/send?app_id=YOUR_APP_ID&name=Thanks&link=".$linkToShare."&redirect_uri=".$linkToRedirectTo."'/>Send</a>";

Sie auch $title etwas zuweisen .

Verwandte Themen