2015-07-14 14 views
15

non ho potuto ottenere alcun aiuto su reddit/r/redditdev così ti sto sperando gente multa a StackOverflow può aiutareFail alla chiamata di reddit/api/presentare

Sto cercando di chiamare /api/submit.

  1. Posso accedere correttamente all'utente e recuperare il token di accesso/portatore. (Io uso il modulo nodo passaporto-reddit per questo)
  2. posso chiamare con successo/api/needs_captcha
  3. Quando/needs_captcha restituisce true, posso chiamare con successo/api/new_captcha
  4. posso visualizzare l'immagine captcha per l'utente
  5. Ora cerco di chiamare presentare utilizzando il modulo di richiesta nodejs' in questo modo

    var options = { 
        url: 'https://oauth.reddit.com/api/submit', 
        method: 'POST', 
        headers: { 
         'Authorization': 'bearer '+usertoken 
        , 'user-agent': 'node.js' 
        }, 
        json: data 
    } 
    request(options, function(error, response, body) ... 
    

Un campione dei miei 'dati' variabile appare così:

{ api_type: 'json', 
    kind: 'self', 
    sr: 'test', 
    title: 'more test', 
    text: 'hello world', 
    iden: 'o6NsDh4IMCDb2To2DeUXJAgEPkB4O7uS', 
    captcha: 'WZRTBL' } 

ma ottengo questo ritorno:

{ 
    "jquery":[ 
    [0, 1, "call", ["body"]], 
    [1, 2, "attr", "find"], 
    [2, 3, "call", [".status"]], 
    [3, 4, "attr", "hide"], 
    [4, 5, "call", []], 
    [5, 6, "attr", "html"], 
    [6, 7, "call", [""]], 
    [7, 8, "attr", "end"], 
    [8, 9, "call", []], 
    [1, 10, "attr", "captcha"], 
    [10, 11, "call", ["1oWOOhcicpcpdwjENw5KrR2xHRl7J0aS"]], 
    [1, 12, "attr", "find"], 
    [12, 13, "call", [".error.BAD_CAPTCHA.field-captcha"]], 
    [13, 14, "attr", "show"], 
    [14, 15, "call", []], 
    [15, 16, "attr", "text"], 
    [16, 17, "call", ["care to try these again?"]], 
    [17, 18, "attr", "end"], 
    [18, 19, "call", []] 
    ] 
} 

Inoltre, ho provato a fare funzionare questo come un utente diverso, uno che ha punti karma abbastanza e non hanno richiesto la captcha.

dopo che ho postato, ho avuto questa risposta, che sembra indicare il successo:

{ 
    "jquery":[ 
    [0, 1, "call", ["body"]], 
    [1, 2, "attr", "find"], 
    [2, 3, "call", [".status"]], 
    [3, 4, "attr", "hide"], 
    [4, 5, "call", []], 
    [5, 6, "attr", "html"], 
    [6, 7, "call", [""]], 
    [7, 8, "attr", "end"], 
    [8, 9, "call", []] 
    ] 
} 

ma non riesco a trovare il mio messaggio postato nel subreddit/r/test.

io devo fare qualcosa di sbagliato tutto ...

+0

Per avere un riferimento, [qui] (https://www.reddit.com/dev/api#POST_api_submit) è la documentazione del punto finale. –

+1

Sembra diverso se si imposta 'extension' su" json "? –

+0

Inoltre, [qui] (https://www.reddit.com/r/redditdev/comments/3d36jl/getting_errorbad_captchafieldcaptcha_on_apisubmit/) è la discussione/r/redditdev. –

risposta

6

Dopo aver attraversato diversi documentazione relativa/api/presentare, ho scoperto che vi siete persi il campo uh del campione di "dati". Manca di uh comporta per gli errori che sembrano come la tua (documentazione un'occhiata qui sotto)

Qui più la relativa documentazione quello che ho detto:

https://github.com/reddit/reddit/wiki/API:-submit http://www.reddit.com/dev/api

+3

Il documento dice anche che "uh" non è richiesto quando si effettua il login con OAuth, cosa che sto facendo. Inoltre, il mio messaggio di errore non contiene "Effettua il login per farlo", quindi non è lo stesso errore – kane

+0

Cercherò di trovare ulteriori informazioni sul problema. – juanmajmjr

0

provare a cambiare l'intestazione User-Agent a qualcosa di più descrittivo. Vedere le linee guida qui: https://github.com/reddit/reddit/wiki/API. Ho sentito di persone che hanno problemi usando solo una stringa generica di user agent come node.js.

Se si riscontrano ancora problemi, la console Apigee (https://apigee.com/console/reddit) mi ha aiutato a eseguire il debug dei problemi con l'API di reddit. Basta aggiungere l'intestazione User-Agent e il token di autorizzazione e modificare i diversi parametri attraverso la console, se è più veloce di creare modifiche all'applicazione.

0

Ho appena avuto un problema simile e la correzione (al tuo secondo errore) era di non inviare come JSON ma come una query nell'URI.

/api/submit?api_type=json&kind=self&sr=test&title=more%20test&text=hello%20world 

Aggiungere qualsiasi altro campo secondo necessità.

Conserva "url", "metodo" e "intestazioni" che hai utilizzato.

Questo dovrebbe quindi restituire un JSON in questo modo:

"json": { 
    "data": { 
     "id": "12abcd", 
     "name": "t3_12abcd", 
     "url": "https://www.reddit.com/r/test/comments/12abcd/more_test/" 
    }, 
    "errors": [] 
} 
Problemi correlati