2015-10-28 21 views
8

Próbuję wysłać tę prośbę do aplikacji github przez ostatnie kilka dni, ale niestety odpowiedź wraca jako "zła wiadomość"Zgłoszenie postu do Github API do tworzenia problemu nie działa

oto fragment kodu wysyłamy na życzenie post używając https zażądać w węźle -

to dane pocztowe

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

jest to plik opcji

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

To https zażądać

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(); 

Próbowałem innego podejścia gdzie token uwierzytelniania dla użytkownika jest w nagłówku jako

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

Ale odpowiedź kawałek zawsze wydaje się pochodzić z powrotem następujące w dzienniku konsoli.

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

Próbowałem tego samego w Apigee i wydaje się, że działa dobrze i wraca do poprawnej odpowiedzi. Mamy nadzieję, że ktoś może znaleźć drobny błąd w powyższym kodzie, który powoduje ten zły komunikat o błędzie.

+0

Masz już to do pracy z jakichkolwiek innych wniosków? Czy zastanawiałeś się też nad użyciem modułu do tworzenia żądań takich jak [request] (https://www.npmjs.com/package/request) lub nawet po prostu używając [node-github] (https://github.com/mikedeboer/ node-github)? – grimurd

+0

@GrimurD Mam to działa z żądania pobierania, aby pobrać niektóre dane użytkownika. Zwykle korzystam z modułu żądania, ale próbowałem go rozbić, aby znaleźć błąd. –

+0

Powinieneś prawdopodobnie zalogować się na wychodzące żądanie używając czegoś takiego jak [fiddler] (http://www.telerik.com/fiddler), aby upewnić się, że żądanie wygląda prawidłowo. Z tym żądaniem musi być coś nie w porządku, ponieważ odzyskujesz 404. – grimurd

Odpowiedz

3

Poza zmienną issueBody nie jest zdefiniowana w opublikowanych fragmentach, kod jest poprawny. Próbowałem go używając personal access token.

Pojawia się błąd, ponieważ musisz dodać urządzenie scope z zasilaniem, aby otworzyć problemy.

Próbowałem zakresów repo i public_repo i oba działają. Zauważ, że repo ma dostęp do prywatnych repozytoriów. Tutaj możesz zobaczyć list of scopes.

Jeśli używasz OAuth, wtedy powinieneś mieć URL wygląda tak:

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

+0

Dzięki! Wydaje się być woking po dodaniu zakresu. :) –

+0

@SohilPandya Nie ma za co! :) –