我正在尝试使用API验证应用程序 这是如何:
webbrowser.open
打开网址。https://stackexchange.com/oauth/login_success
示例重定向网址为:.../login_success#access_token=xyz&expires=00000
我的当前代码:
auth_url = 'https://stackexchange.com/oauth/dialog'
def authenticate():
scope = "write_access,private_info,read_inbox"
url = make_url(auth_url,client_id=132,
scope=scope,response_type='code',
redirect_uri='https://stackexchange.com/oauth/login_success')
webbrowser.open(url)
如何在用户验证自己后获取重定向URL(用户访问的URL)???
答案 0 :(得分:2)
尝试仅为一个请求启动您自己的小型HTTP服务器,让API重定向到它并等待重定向的请求出现。这不是一个完整的例子,只是基本概念:
import BaseHTTPServer
auth_url = 'https://stackexchange.com/oauth/dialog'
# replace with your own http handlers
def wait_for_request(server_class=BaseHTTPServer.HTTPServer,
handler_class=BaseHTTPServer.BaseHTTPRequestHandler):
server_address = ('', 8000)
httpd = server_class(server_address, handler_class)
return httpd.handle_request()
def authenticate():
scope = "write_access,private_info,read_inbox"
url = make_url(auth_url,client_id=132,
scope=scope,response_type='code',
redirect_uri='http://localhost:8000/login_success')
webbrowser.open(url)
wait_for_request()
您可能需要使用HTTPS。从长远来看,使用现有的OAuth实现可能会更好。
答案 1 :(得分:-1)
用户使用堆栈交换进行身份验证后,SE页面将重定向回您的页面(下面的“redirect_uri”)。您的代码目前重定向到https://stackexchange.com/oauth/login_success;相反,您应该重定向到您控制的页面。