You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现打开浏览器手动登录后读取地址栏URL获取eBay API刷新令牌

实现方案

你当前使用的urllib仅会发起后台HTTP请求,不会唤起浏览器图形界面,也无法支持手动登录交互,可采用OAuth流程通用的本地服务监听方案实现需求。

实现逻辑

  • 调用Python内置webbrowser模块唤起系统默认浏览器打开eBay授权URL
  • 提前在eBay开发者后台将应用回调地址配置为本地端口地址,比如http://localhost:8080/callback
  • 启动本地临时HTTP服务监听回调端口,用户完成登录授权后,eBay会自动跳转到配置的本地回调地址,本地服务即可直接捕获跳转后的完整URL

可直接运行的示例代码

import webbrowser
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import parse_qs, urlparse

# 替换为你自己的eBay授权URL
AUTH_URL = "https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.co.uk/&ec=GAZAmgQ"
# 回调配置需与eBay开发者后台填写的回调地址完全一致
CALLBACK_PORT = 8080
CALLBACK_PATH = "/callback"

full_redirect_url = ""
auth_code = ""

class CallbackRequestHandler(BaseHTTPRequestHandler):
    # 关闭默认的控制台日志输出,不需要可以删掉这行
    def log_message(self, format, *args):
        pass
    
    def do_GET(self):
        global full_redirect_url, auth_code
        full_redirect_url = f"http://localhost:{CALLBACK_PORT}{self.path}"
        # 匹配回调地址
        if self.path.startswith(CALLBACK_PATH):
            # 从URL参数中提取授权码
            query_params = parse_qs(urlparse(self.path).query)
            if "code" in query_params:
                auth_code = query_params["code"][0]
                # 返回成功提示给浏览器
                self.send_response(200)
                self.send_header("Content-Type", "text/html;charset=utf-8")
                self.end_headers()
                self.wfile.write("<h1>授权成功,可关闭当前页面</h1>".encode("utf-8"))
                return
        self.send_response(404)
        self.end_headers()

if __name__ == "__main__":
    # 唤起浏览器打开授权页
    webbrowser.open(AUTH_URL)
    print("请在弹出的浏览器页面中完成登录授权")
    # 启动本地服务监听回调
    server = HTTPServer(("0.0.0.0", CALLBACK_PORT), CallbackRequestHandler)
    # 只处理一次请求后自动停止服务
    server.handle_request()
    # 输出结果
    print(f"跳转后完整URL:{full_redirect_url}")
    if auth_code:
        print(f"提取到的授权码:{auth_code}")
        # 后续可使用该授权码调用eBay接口兑换refresh token

注意事项

  • 必须先在eBay开发者后台的应用配置页,将回调地址修改为和代码中一致的http://localhost:8080/callback,否则eBay不会跳转至本地服务
  • 若8080端口被占用,可更换为其他空闲端口,同步修改代码和后台回调配置即可

内容的提问来源于stack exchange,提问作者user12918986

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:39:02