我目前正在尝试编写一个Python脚本,该脚本将使用Deviantart的API自动调整我的收藏夹。为此,我需要先在我的脚本中登录。 Deviantart使用OAuth2身份验证,这需要一个redirect_uri,据我所知,它应该是我的应用程序运行的服务器。
但是我在我的计算机上本地运行脚本(而不是在服务器上),只是通过Python的Requests
库发送http请求。当OAuth过程将身份验证令牌所需的代码作为GET
调用redirect_uri的参数发送时,我该如何进行身份验证,这对我来说无处可寻?没有运行服务器,是否无法进行身份验证?
我的问题仍然是我正在运行一个简单的脱机脚本,而且我不确定如何通过它进行身份验证。
到目前为止,这是我的验证码:
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中实现这两个解决方案中的任何一个?
答案 0 :(得分:1)
您应该使用收到的代码获取授权令牌。此令牌将用于之后访问DeviantArt。
请参阅https://www.deviantart.com/developers/authentication("使用授权码授予")。
答案 1 :(得分:1)
如果您的应用程序处于脱机状态,则无法使用授权代码和隐式授权类型:两个流都需要重定向URI。
由于无法从Internet访问您的python脚本,并且因为Deviantart不允许使用其他授权类型(客户端凭据除外,但在您的情况下不相关),因此您将无法发出任何访问令牌
您的申请必须可从互联网访问。