前言
想试一下第三方登录,本来想试一下微信扫码的,结果微信开放平台要收费,只好用GitHub测试一下,感觉原理应该大差不差。
一、第三方登录原理?
本质就是GitHub授权。
Github 还提供了一个叫做“OAuth App”的东西,它的使用方式和 Github App 非常类似,最大的不同点是 OAuth App 所获取的权限都是固定且只读的,用户只能读取固定的数据而不能修改数据;而 Github App 几乎可以获取Github提供的所有功能权限,且所获取的权限可以被设定为“只读”,“可读可写”和“禁止访问”,对于权限的授权粒度会更细。
二、使用步骤
1.申请GitHub账号
settings —> Developer settings 进行申请GitHub apps 获取公钥和id
2.获取id和用户名
代码如下:
def get_github_user(request):
code = request.GET.get('code')
print('code:', code)
client_id = '***********'
client_secret = '****************'
url = f"https://github.com/login/oauth/access_token?client_id={client_id}&client_secret={client_secret}&code={code}"
res = requests.post(url, headers={
"accept": 'application/json'
}, timeout=30)
print(res.text)
# 返回json数据 获取access_token
access_token = res.json().get("access_token")
res = requests.get("https://api.github.com/user", headers={
"accept": 'application/json',
"Authorization": f"token {access_token}"
}, timeout=30)
print(res.text)
github_res = res.json()
try:
github_name=github_res.get('login')
github_id=github_res.get('id')
print(github_id)
print(github_name)
except:
print('err')
这样我们就获取了GitHub的id和用户名,就可以进行下一步操作了,可以通过验证用户名和id直接进入或者其他方式验证。