在 python 中在幕后进行 OAuth2 令牌通信

Make OAuth2 token communication behind the scenes in python

我正在尝试构建一个最基本的 python 应用程序,它使用 OAuth2 登录 GitHub 并从那里获取我的用户名 - 使用 requests-oauthlib(这个:https://requests-oauthlib.readthedocs.io/en/latest/examples/github.html ).

这是来自那里的代码:

from requests_oauthlib import OAuth2Session
from flask.json import jsonify

client_id = <my GitHub id>
client_secret = <my GitHub secret>
authorization_base_url = 'https://github.com/login/oauth/authorize'
token_url = 'https://github.com/login/oauth/access_token'
github = OAuth2Session(client_id)

authorization_url, state = github.authorization_url(authorization_base_url)
print('Please go here and authorize,', authorization_url)

redirect_response = input('Paste the full redirect URL here:')

github.fetch_token(token_url, client_secret=client_secret,
    authorization_response=redirect_response)

r = github.get('https://api.github.com/user')
print(r.content)

如果我将生成的 link 添加到浏览器中,按回车键,url 会像魅力一样变成 localhost:8080 (我提供的回调 url在 GitHub) 中带有代码和状态参数。如果我在我的 python 代码中输入它,我就能够获取 GitHub 数据。 我的问题是,有什么方法可以使它自动化吗?比如,跳过用户交互并简单地在 GitHub 中询问凭据,然后在控制台中打印我的数据? 谢谢

您正在使用网络应用程序流程。为了您的目的,最好使用 Device Flow.

基本上,用户需要添加您将在 GitHub 页面输入中提供的代码。由于您将其用作一个简单的应用程序,因此您可以在较低级别执行此操作,并将简单的 GET 和 POSTS 请求与 requests

一起使用