Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making a Post request to Github API for creating issue is not working

I have been trying to make this post request to the github api for the last couple of days, but unfortunately the response is coming back as "bad message"

here is the piece of code we are sending in the post request using https request in node -

This is the post data

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

This is the options file

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

This is the https request

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

I have tried another approach where the authentication token for the user is in the header as

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

But the chunk response always seems to come back with the following in the console log.

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

I have tried the same in apigee and it seems to work ok and returns to correct response. Hoping someone can find the minor error in the code above that is causing this bad message error.

like image 205
Sohil Pandya Avatar asked Oct 28 '15 12:10

Sohil Pandya


1 Answers

Except the issueBody variable is not defined in the snippets you posted, the code is correct. I tried it using a personal access token.

The error you get appears because you need to add a scope with power to open issues.

I tried the repo and public_repo scopes and they are both working. Note that repo has access to private repositories. Here you can see the list of scopes.

If you're using OAuth, then you you should have an url looking like this:

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

like image 123
Ionică Bizău Avatar answered Nov 09 '22 20:11

Ionică Bizău