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