2015-10-28 9 views
8

Ho cercato di effettuare questa richiesta di post all'API di github per l'ultimo paio di giorni, ma purtroppo la risposta è tornata come "messaggio errato"Fare una richiesta di posta all'API di Github per la creazione di un problema non funziona

ecco il pezzo di codice stiamo inviando nella richiesta post utilizzando https chiedere per nodo -

Questi sono i dati post-

var issueData = JSON.stringify({ 
    "title":title, 
    "body":comment 
}); 

Questo è il file opzioni

var options = { 
    host: 'api.github.com', 
    path: '/repos/sohilpandya/katasohil/issues?access_token='+sessions.token, 
    headers: { 
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0', 
    }, 
    method: 'POST' 
}; 

Questa è la richiesta HTTPS

var requestaddIssue = https.request(options, function(responseFromIssues){ 
    responseFromIssues.setEncoding('utf8'); 
    responseFromIssues.on('data', function(chunk){ 
    console.log('>>>>chunk>>>>>',chunk); 
    issueBody += chunk; 
    }); 
    responseFromIssues.on('end',function(issueBody){ 
    console.log(issueBody); 
    }); 
}); 
requestaddIssue.write(issueData); 
requestaddIssue.end(); 

Ho provato un altro approccio in cui il token di autenticazione per l'utente si trova nell'intestazione come

'Authentication': 'OAuth '+ sessions.token (where we are storing token inside sessions) 

Ma la risposta pezzo sembra sempre di tornare con il seguente nel log della console.

{ 
"message": "Not Found", 
"documentation_url": "https://developer.github.com/v3/issues/#create-an-issue" 
} 

Ho provato lo stesso in apigee e sembra funzionare bene e ritorna alla risposta corretta. Sperando che qualcuno possa trovare l'errore minore nel codice sopra che causa questo errore di messaggio errato.

+0

avete ottenuto questo al lavoro con altre richieste? Hai anche considerato di utilizzare un modulo per creare richieste come [richiesta] (https://www.npmjs.com/package/request) o anche solo usando [node-github] (https://github.com/mikedeboer/ nodo-github)? – grimurd

+0

@GrimurD Ho funzionato con una richiesta get per recuperare alcuni dati utente. Di solito uso il modulo di richiesta, ma ho provato a scomporlo solo per trovare il bug. –

+0

Probabilmente dovresti registrare la richiesta in uscita usando qualcosa come [fiddler] (http://www.telerik.com/fiddler) per assicurarti che la richiesta sia corretta. Deve esserci qualcosa di sbagliato nella richiesta dato che stai recuperando 404. – grimurd

risposta

3

Ad eccezione della variabile issueBody non definita negli snippet che hai postato, il codice è corretto. Ho provato usando personal access token.

L'errore visualizzato appare perché è necessario aggiungere un scope all'alimentazione per aprire i problemi.

Ho provato gli ambiti repo e public_repo e stanno entrambi funzionando. Notare che repo ha accesso agli archivi privati. Qui puoi vedere lo list of scopes.

Se stai usando OAuth, allora si dovrebbe avere un URL simile a questo:

https://github.com/login/oauth/authorize?client_id=<client-id>&scope=public_repo&redirect_uri=<redirect-uri>

+0

Grazie! Sembra che stia dormendo dopo aver aggiunto l'ambito. :) –

+0

@SohilPandya Prego! :) –

Problemi correlati