0

我正在尝试构建一个最基本的 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)

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

4

1 回答 1

1

您正在使用 Web 应用程序流。出于您的目的,最好使用Device Flow

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

于 2020-11-27T08:07:18.837 回答