2013-08-02 9 views
5

Desidero fornire agli utenti la possibilità di inviare denaro ai propri amici di Facebook tramite la nostra app (Exvo) tramite l'invio di un URL all'invito pagina via Facebook.Finestra di dialogo Invia Facebook con API Codice errore: 100 ('link' non valido)

Sto utilizzando la finestra di dialogo "Invia" di Facebook (con un reindirizzamento al sito Web di Facebook). L'URL esatto sto reindirizzare l'utente a è (to campo è stato redatto):

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

Questo mi presenti con una finestra di Facebook 'Inviare'. Quando si digita un messaggio personalizzato e premere 'Invia', sto presentato con questo errore:

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

Il collegamento param (estratto dal URL sopra e decodificato) è questo:

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

che è un URL valido, restituendo una risposta corretta 200. Utilizzando il debugger di Facebook posso vedere che l'URL fornito non genera errori:

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

Solo avvertimenti circa le proprietà desunti (ho aggiunto quelli ad un certo punto pure, ma non ha aiutato).

Si noti inoltre che una volta ogni tanto (come 1 su 10), quando faccio clic su "Invia", il messaggio passa e non vedo errori, il che lo rende ancora più strano.

Perché si verifica questo errore? Che cosa sto facendo di sbagliato?

+0

Ho lo stesso problema - ho pensato che forse il problema era che i miei link tornavano allo stesso URL di tela da cui erano stati pubblicati, ma il cambiamento non sembrava fare la differenza. Le cose hanno funzionato un po 'prima, ma l'ultima ora è stata interrotta (ad esempio, non riesco nemmeno a creare un collegamento con yahoo.com). Sospetto che questo possa essere solo "un codice è rotto e nessuno lo sa o se ne frega molto di più". :/ – mgkimsal

+0

Penso di averlo risolto sulla mia estremità - Ho avuto un URL come il tuo: foo.com/path/to/code/id/6/rand/ab2e9c8dfb27385 Ho aggiunto la parte rand per agire come un cache buster, e apparentemente non gli piacevano quelle stringhe ID davvero lunghe. Liberarsi di quelli sembrava aiutare, mentre le cose stanno funzionando. Altre cose che ho controllato - il og. meta tag per il debugger di Facebook - l'URL uno, mi sono assicurato che non ci fosse il reindirizzamento in corso. E ho aggiunto i campi mancanti (immagine, descrizione, ecc.). Quelli erano solo "avvertimenti", ma il completamento di tutto questo e la perdita della lunga stringa mi hanno dato un "invio" di lavoro. In bocca al lupo! – mgkimsal

risposta

0

facendo quanto segue fisso per me:

  • più breve token (questa stringa nella link param: 9fb77bda665f0ae8f58843daec80a29b, che era lungo 32 caratteri, ora è al 16), come consigliato da gkimsal
  • accettare October 2013 breaking changes , che mi ha richiesto di introdurre i tag OpenGraph nella pagina e rilasciare name, description e picture_uri parametri che stavo includendo durante la costruzione della finestra di dialogo Invia reindirizzamento uri

Ora Facebook, prima di visualizzare la finestra di dialogo Invia all'utente, deve recuperare in anticipo la mia pagina per recuperare i dati (da OG: title, description e image) necessari per visualizzare una finestra di dialogo corretta per l'utente. Penso che questo sia quello che mi ha aiutato di più nel mio caso.

+0

Ma i metatag non funzionano per me. Sto ancora riflettendo lo stesso problema. Si prega di avvisarmi .. – user2003356

2

Ho capito qualcosa di strano, la stessa cosa è accaduta oggi sul sito che gestisco, il problema sembrava essere che il link contenga la parola facebook, quindi prova a rimuovere [facebook, fb o f se era una parola intera] dal tuo url, dovrebbe funzionare, ho avuto un url come open/ID/facebook/ e l'unico modo in cui ha funzionato quando l'ho cambiato in fopen/ID/ che sembra stupido!

Così potrebbe essere nel tuo caso questo è il problema: https://www.exvo.com/invitations/9fb77bda665f0ae8f58843daec80a29b

tenta di modificare l'url a qualcosa senza fb o Facebook o qualcosa di simile.

+0

Grazie per la risposta, ma sfortunatamente non è così. L'ho modificato in qualcosa di completamente diverso (ma lasciando il nome del dominio lì) e il risultato è stato il temuto errore 100. –

0

Ho riscontrato questo problema solo utilizzando la finestra di dialogo Invia. Stavo usando parametri di querystring dinamici su un URL comune. L'URL comune è stato raschiato da Facebook ma ogni iterazione dell'URL comune e i parametri di querystring comporterebbero questo errore se Facebook non avesse raschiato quell'URL esatto in precedenza.

Ho risolto il problema forzando Facebook a grattare l'URL prima del. Tento di inviarlo tramite la finestra di dialogo Invia interfaccia utente FB. Utilizza l'API FB per raggiungere graph.facebook.com con l'URL pubblicato nel parametro id e un parametro scrape impostato su true.

Come così:

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]' 
    }); 
}); 

ho anche risposto con questa soluzione per lo stesso problema here.

8

Questo potrebbe non essere stato il problema nel tuo caso, ma solo per scopribilità: assicurati che l'URL che stai condividendo sia pubblicamente disponibile su Internet (cioè non all'interno del tuo firewall o su un computer locale). FB deve visitare il tuo URL per verificarne l'autenticità.

+0

Sì, certo :) –

+0

questo mi ha fatto capire la risposta giusta. Ho dovuto cambiare https a http nel mio link perché non ho ancora installato https sul mio sito, quindi Facebook probabilmente non è stato in grado di verificarlo. – parliament

+0

doh! Sto usando localhost ... Non sono un uomo intelligente> _ < – Kraiden

2

Come mpcabd ha sottolineato in precedenza, assicurarsi di rimuovere qualsiasi cosa con fb, fbdev, facebook nell'URL perché quando l'ho fatto, ha risolto il problema per me. È probabilmente un bug o una misura di sicurezza di Facebook. Devi sempre passare un redirect_uri con il link e provare a menzionare anche un titolo.

Anche il tuo link e redirect_uri devono essere all'interno del dominio che hai fornito per l'app. Es: se il dominio applicazione in impostazioni app è http://stackexchange.com, non è possibile condividere un link come dire https://stackoverflow.com/apps/php/fbsdk/etc/login.php, invece si deve condividere il link http://stackexchange.com/apps/php/etc/login.php che ha lavorato per me

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

È possibile anche assegnare $title a qualcosa .

Problemi correlati