如何使用oauth2为Github api使用python获取访问令牌

时间:2015-10-27 23:31:33

标签: python django oauth-2.0 github-api

我正在构建一个应用程序,使用django在python中访问Github api。我是第一次建立这种应用程序的新手。 我指定了一个链接来获取用户帐户的访问权限

<a href="https://github.com/login/oauth/authorize?client_id=something&scope=something,something"></a>

现在我可以访问用户的帐户了。现在问题是,我想使用oauth2,这样它就不会要求每个请求的用户名和密码。 我的问题是如何获取access_token以及存储它的位置。如何在我的django视图中传递POST https://github.com/login/oauth/access_token的{​​{1}}的post参数。以及如何为不同用户链接不同的访问权限。请帮我。我在掌握基础知识方面遇到了问题。

1 个答案:

答案 0 :(得分:1)

我建议使用Python Social Auth,然后在将其设置为Github backend后利用work with your django app

因此,您可以使用以下内容大致传递访问令牌:

import requests

user = User.objects.get(...)
social = user.social_auth.get(provider='github')
response = requests.get(
   'https://github.com/login/oauth/authorize? 
    client_id=something&scope=something,something',
    params={'access_token': social.extra_data['access_token']}
)
retrieved_data = response.json()['items']

如果您想继续使用链接,也可以在模板中提供令牌。而且,您不需要将范围作为查询参数传递,当然,Python Social Auth也可以为您处理