如何在使用 GitHub API 时使用基本身份验证创建 OAuth 令牌
How to use basic authentication to create OAuth Token while working with GitHub APIs
我正在开发一个 django 项目,我正在尝试使用用户名和密码实现 Github 登录。
这是我的 views.py
文件的内容:
@login_required
def github_access_via_username(request):
if request.method == 'POST':
form = GitHubUserPassAuthForm(request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
payload = {
"scopes" : [
"repo", "admin:org", "admin:public_key", "admin:repo_hook", "admin:org_hook",
"gist", "notifications", "user", "delete_repo", "write:discussion", "admin:gpg_key",
],
"note" : "Permissions",
}
response = requests.post('https://api.github.com/authorizations', params=payload, auth=(username, password))
#json_response = response.json()
#access_token = json_response['token']
#user = Github(access_token)
return HttpResponse(response.status_code)
else:
form = GitHubUserPassAuthForm()
return render(request, 'core/github_login.html', {'form':form})
这是print(reponse)
的输出
{'message': 'Problems parsing JSON', 'documentation_url': 'https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization'}
[23/Sep/2018 19:55:42] "POST /core/github_access_via_username/ HTTP/1.1" 200 5020
我没有得到任何东西,所以我决定 return status_code
,它 return 编辑了 400
。我卡住了。有什么大开眼界的吗?
我想通了!根据 GitHub 上的文档,您需要您的客户端 ID 和客户端密钥来获取或创建新的授权。所以我修改了 payload
dict 和 response
变量如下:
...
payload = {
...
"client_secret" : settings.GITHUB_CLIENT_SECRET,
}
response = requests.put('https://api.github.com/authorizations/clients/{}'.format(settings.GITHUB_CLIENT_ID), auth=(username, password), data=json.dumps(payload))
...
...成功了!
我正在开发一个 django 项目,我正在尝试使用用户名和密码实现 Github 登录。
这是我的 views.py
文件的内容:
@login_required
def github_access_via_username(request):
if request.method == 'POST':
form = GitHubUserPassAuthForm(request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
payload = {
"scopes" : [
"repo", "admin:org", "admin:public_key", "admin:repo_hook", "admin:org_hook",
"gist", "notifications", "user", "delete_repo", "write:discussion", "admin:gpg_key",
],
"note" : "Permissions",
}
response = requests.post('https://api.github.com/authorizations', params=payload, auth=(username, password))
#json_response = response.json()
#access_token = json_response['token']
#user = Github(access_token)
return HttpResponse(response.status_code)
else:
form = GitHubUserPassAuthForm()
return render(request, 'core/github_login.html', {'form':form})
这是print(reponse)
{'message': 'Problems parsing JSON', 'documentation_url': 'https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization'}
[23/Sep/2018 19:55:42] "POST /core/github_access_via_username/ HTTP/1.1" 200 5020
我没有得到任何东西,所以我决定 return status_code
,它 return 编辑了 400
。我卡住了。有什么大开眼界的吗?
我想通了!根据 GitHub 上的文档,您需要您的客户端 ID 和客户端密钥来获取或创建新的授权。所以我修改了 payload
dict 和 response
变量如下:
...
payload = {
...
"client_secret" : settings.GITHUB_CLIENT_SECRET,
}
response = requests.put('https://api.github.com/authorizations/clients/{}'.format(settings.GITHUB_CLIENT_ID), auth=(username, password), data=json.dumps(payload))
...
...成功了!