2015-08-12 14 views
12

provo a caricare un'immagine tramite Twitter api, come descritto lì ho creato un modulo con e name="media[]" -Twitter API - caricare un'immagine

<form id="image-form"> 
    <input type="text" name="status"> 
    <input name="media[]" type="file" /> 
    <input type="submit" value="POST IMAGE"> 
</form> 

inoltre ho un gestore submit -

$('#image-form').submit(function(e) { 
       e.preventDefault(); 
       var formData = new FormData(this); // <-- 'this' is your form element 


     $.ajax({ 
        url:'https://api.twitter.com/1.1/statuses/update_with_media.json', 
        type: 'POST', 
        contentType: false, 
        pagerocessData: false, 
        processData: false, 
        data: formData, 
        success: function(data) { 
         alert('Image upload succeeded'); 
        }, 
        error: function (responseData, textStatus, errorThrown) { 
         alert('GET failed.'); 
        } 
       }); 
      }); 

Sotto reti a Chrome, vedo questa richiesta con Content-Type:multipart/form-data

finalmente ottengo "res ponse 200 "ma non carica un'immagine sull'account Twitter,

Cosa ho fatto di sbagliato qui?

+1

Da [POST media/upload] (https://dev.twitter.com/rest/reference/post/media/upload): 'Verifica che il tuo POST sia una richiesta multipart/form-data'. Sei stato tu? (Non ho usato l'API di twitter, ma sembra che sia così) –

+1

Controllato e trovato - 'Content-Type: multipart/form-data' – URL87

+1

Perché non usi l'hook dell'API corrente invece di quello deprecato ? Questo endpoint è stato DEPRECATED. Si prega di utilizzare gli stati POST/aggiornamento per il caricamento di una o più entità media. – ChrJantz

risposta

8

Non ho potuto postare questo come un commento, quindi ho intenzione di rischiare la vita scrivendola come risposta: P.

Ho provato Exploring the Twitter API (su Firefox funziona, in Chrome non riesce quando lo si carica).

passaggi per impostare il test

  • Servizio: Selezionare https://api.twitter.com/1.1, mostrerà alcune opzioni. Nell'elenco degli endpoint selezionare quello che si sta utilizzando.
  • autenticazione: OAuth (provate con un account falso se si ha paura di utilizzare il possiede, ho creato un falso di testare questo ho provato con No auth, Basic Auth e nessuno di loro ha funzionato.)
  • URL richiesta: POST, l'url viene impostato automaticamente.
  • Scheda query: status - Il messaggio di tweet.
  • Scheda corpo: scorrere verso il basso e cercare media, selezionare un'immagine.

Infine premere send.

Quello che posso notare è che se non si specifica un'immagine o un testo non funzionerà (ovviamente). Se imposto un'immagine senza stato caricherò l'immagine, e se specificassi entrambi, beh ... caricherà l'immagine con il testo.

Si noti che lo stato viene aggiunto all'URL.

Quindi un paio di domande:

  • Hai impostare OAuth?
  • Stai impostando almeno uno dei campi richiesti (stato o supporto)? Stai passando lo stato attraverso l'URL?
  • Quando dici che funziona, ma non carica l'immagine, vedi lo stato nel tuo account Twitter?

Ecco il risultato dello fake account creato.

Spero almeno che ti dia un suggerimento su ciò che può essere.

+0

e se volessi inviare immagine -media- sopra l'URL dell'immagine? – Ozan

+0

Hai javascript di esempio per questo? – Elshan