我目前正在尝试编写一个 Python 脚本,该脚本将使用 Deviantart 的 API 自动随机播放我最喜欢的歌曲。为此,我需要首先登录我的脚本。 Deviantart 使用 OAuth2 身份验证,这需要一个 redirect_uri,据我了解,它应该是运行我的应用程序的服务器。
但是我在我的计算机上本地运行该脚本(而不是在服务器上),并且只是通过 Python 发送 http 请求Requests
图书馆。当 OAuth 过程将身份验证令牌所需的代码作为参数发送时,我如何进行身份验证GET
调用redirect_uri,它对我来说没有什么特别的指向?有没有办法在不运行服务器的情况下进行身份验证?
EDIT
我的问题仍然是我正在运行一个简单的离线脚本,并且我不确定如何从中进行身份验证。
到目前为止,这是我的身份验证代码:
import binascii, os, requests
def auth():
request = 'https://www.deviantart.com/oauth2/authorize'
state = binascii.hexlify(os.urandom(160))
params = {
'response_type': 'token',
'client_id': 1,
'redirect_uri': 'https://localhost:8080',
'state': state,
'scope': 'user'
}
r = requests.get(request, params)
print(r)
打印的响应只是一个 200 HTTP 代码,而不是访问令牌(显然,因为尚未在任何地方输入用户名和密码)。该请求被发送到 DA 的授权页面,但由于该页面本身实际上并未在我的脚本中打开,因此我无法输入用户名和密码在任何地方登录。而且我无法直接发送用户名和密码GET
请求以这种方式进行身份验证(同样很明显,因为像这样发送密码是一个糟糕的主意)。
最好我想要一种方法,简单地让用户(我)在脚本运行的控制台中提示输入用户名和密码,然后在用户成功登录后让脚本继续执行。
或者,如果上述方法不可能,则脚本应在浏览器中打开授权网页,然后在用户登录后继续执行。
我将如何在 Python 中实现这两个解决方案?