使用套接字从Oauth2重定向URI获取访问令牌

时间:2019-01-04 16:20:11

标签: python-3.x sockets oauth-2.0 dropbox

我正在创建一个数据库程序,该程序需要将<1MB 7z文件备份到保管箱。为了使用保管箱,我将需要从用户处获得一个可重复使用的访问令牌,并将对其进行加密以进行存储。我的问题来自从重定向URI获取访问令牌。

要获取访问令牌,请转到诸如https://www.dropbox.com/oauth2/authorize?client_id=[YOUR_APP_ID_HERE]&response_type=token&redirect_uri=http://localhost:50000之类的链接,并在获得授权后,将您发送到该链接中指定的URL(在我的情况下为http://localhost:50000)。网址看起来像:

http://localhost:50000/#access_token=[ACCESS_TOKEN_HERE]&token_type=bearer&uid=[UID_HERE]&account_id=[ACCOUNT_ID_HERE]

要完成授权,当我重定向到链接时,需要从上面的链接中获取访问令牌。到目前为止,我已经使用socket在localhost上创建了一个绑定到端口50000的套接字,并且可以看到该套接字的连接并向后发送消息。但是,我不知道如何查看用于重定向用户的完整URL,我需要访问令牌。到目前为止,我的代码如下:

APP_KEY = "MY_APP_KEY"
APP_SECRET = "MY_APP_SECRET"
ACCESS_TYPE = 'app_folder'


webbrowser.open_new_tab("https://www.dropbox.com/oauth2/authorize?client_id=[MY_APP_KEY]&response_type=token&redirect_uri=http://localhost:50000/")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 50000))
s.listen(1)
conn, addr = s.accept()
print('Connected with ' + addr[0] + ' : ' + str(addr[1]))
conn.send(bytes(f"Welcome to my localhost server on port 50000. Your    address is {addr}", "utf-8"))
data = conn.recv(1024)
print(f"Data: {data.decode()}")

我希望data返回的conn.recv()中包含有关http请求的一些信息,但是输出如下:

Connected with 127.0.0.1 : 54697
Data: GET / HTTP/1.1
Host: localhost:50000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://www.dropbox.com/
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1

有人知道我将如何获得完整的重定向uri,而无需用户将其复制并粘贴到我的程序中吗?这是我的第一个使用套接字的项目,但我仍然不称职。

谢谢您的帮助。

0 个答案:

没有答案