gpt4 book ai didi

python - Python套接字服务器无法解码来自OAUTH的重定向

转载 作者:行者123 更新时间:2023-12-03 11:50:24 25 4
gpt4 key购买 nike

我不确定可以显示多少代码,但是概念很简单。我正在编写可与TD Ameritrade API配合使用的python脚本。我从API获取门户的URL,然后在浏览器中打开它。接下来,我将设置一个套接字服务器来处理门户的重定向。下面是服务器的代码:

serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)

# get local machine name
host = "localhost"

port = 10120
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# bind to the port
serversocket.bind((host, port))

print("listening")
# queue up to 5 requests
serversocket.listen(5)

allData = ""

while True:
# establish a connection
try:
conn,addr = serversocket.accept()
except KeyboardInterrupt:
break

print("Got a connection from %s" % str(addr))
while True:
data = conn.recv(4096)

if not data:
print("done")
break

print(data.decode('utf-8', "ignore"))
conn.close()

当我浏览门户并进行重定向时,在控制台中,我看到以下内容:
Got a connection from ('127.0.0.1', 65505)                                                                              
|,?2!c[N': [?`XAn] "::+/,0̨̩ / 5
jj localhost
3 + )http/1.1
ej\E<zpִ_<%q\r)+ - +
jj zz

但是,如果我要复制URL,请打开一个新选项卡,将其粘贴并继续,我将得到以下(正确)响应:
Got a connection from ('127.0.0.1', 49174)                                                                              
GET /?code=<RESPONSE_TOKEN> HTTP/1.1
Host: localhost:10120
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/81.0.4044.138 Safari/537.36 OPR/68.0.3618.125
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-
exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

当我转到浏览器的网络概述时,尝试查看请求 header 时会看到以下警告: Provisional headers are shown
重定向的http请求与我手动粘贴url时的请求之间的唯一区别是网络查看器中的 initiator列是重定向的“誓言”,而手动粘贴的是“other”。

希望我提供了足够的信息和代码。如果需要,我可以尝试制作一个副本以进行复制,但是需要一个TD Ameritrade Developer帐户才能与API连接。

在此先感谢您的帮助。我已经研究了6个多小时,却找不到任何东西。希望我不会错过任何明显的事情。

最佳答案

我认为,不需要套接字即可处理oauth重定向。套接字是另一种要求。

同样,当您手动点击重定向时,不会调用套接字。只是一个简单的http端点。

尝试使用具有oauth代码提取的snippet:

from urlparse import urlparse,parse_qsl
class Handler(BaseHTTPRequestHandler):

def do_GET(self):
url = urlparse(self.path)
code = parse_qsl(url.query)['code']

或这个:

https://gist.github.com/willnix/daed2b57ab8d613f6bfa53c6d0b46fd3

您可以在此处获得更多简单的http get端点片段:

https://gist.github.com/search?q=def+do_GET+python&ref=searchresults

关于python - Python套接字服务器无法解码来自OAUTH的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62058110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com