github问api 401,为什么?(django的)

kec*_*ske 21 python django github-api http-status-code-401

我正在尝试将github问题api集成到一个项目中.我想我遵守了oauth的规则,以及http://develop.github.com/p/issues.html上需要和提到的所有内容,但它似乎不起作用.我没有收到详细的错误消息,只有401.

  • 我在github(api v2)注册了一个oauth应用程序,并提供了回调网址.
  • 我构建了auth url:https://github.com/login/oauth/authorize? client_id =...& redirect_uri =http://www./no_port/
  • 他们为我发布代码(请求令牌),我交换它访问令牌,它工作正常.问题:
  • 我可以在自己的回购中看自己的问题,但如果我只是一个合作者,它是401(未经授权)
  • 即使在我自己的回购中也无法创建新问题:POST:http ://github.com/api/v2/json/issues/open/:user /:repo PARAMS:body =&login =&token = 6&title =

用django,python实际实现:

url = 'https://github.com/login/oauth/access_token?client_id=%(client_id)s&redirect_uri=%(redirect_uri)s&client_secret=%(client_secret)s&code=%(code)s' % locals()        
req = urllib2.Request(url)
response = urllib2.urlopen(req).read()
access_token = re.search(r'access_token=(\w+)', response).group(1)
url = 'http://github.com/api/v2/json/issues/open/%(user)s/%(repo)s' % locals()
params = urllib.urlencode({'login': user, 'token': access_token, 'title': 'title', 'body': 'body'})
req = urllib2.Request(url, params)
try:
    response = urllib2.urlopen(req)
except HTTPError, e:
    return HttpResponse('[*] Its a fckin %d' % e.code)
except URLError, e:
    return HttpResponse('[*] %s\n' % repr(e.reason))
else:
    resp = json.loads(response.read())
Run Code Online (Sandbox Code Playgroud)

Val*_*ntz 0

我不知道这是否正是您所需要的,但这是我在我的项目之一中用于打开问题的代码:

def issue(self, channel, network, nick, user, title, repoName):
    body = 'Issue sent from %s at %s by %s (registered as %s)' % \
            (channel, network, nick, user.name)
    login = self.registryValue('login')
    token = self.registryValue('token')
    data='title=%s&body=%s&login=%s&token=%s' % (title, body, login, token)
    url = 'http://github.com/api/v2/json/issues/open/' + repoName
    response = json.loads(urllib.urlopen(url, data=data).read())
    id = response['issue']['number']
    return id
Run Code Online (Sandbox Code Playgroud)