将本机Python应用程序与Uber API集成时,重定向URL(Redirect URI)是OAuth 2.0授权流程中的关键配置项。以下是完整的解析和解决方案:
localhost
或自定义协议),需特殊处理。http://localhost:8080/callback
或自定义协议myapp://callback
)。localhost
+端口(开发环境常用)myapp://
,适合生产环境)from flask import Flask, request
import requests
app = Flask(__name__)
# Uber API配置
CLIENT_ID = "your_client_id"
REDIRECT_URI = "http://localhost:8080/callback" # 需与Uber后台配置一致
@app.route("/callback")
def callback():
code = request.args.get("code")
if code:
# 用code交换Access Token
token_url = "https://login.uber.com/oauth/v2/token"
data = {
"client_id": CLIENT_ID,
"client_secret": "your_client_secret",
"grant_type": "authorization_code",
"redirect_uri": REDIRECT_URI,
"code": code
}
response = requests.post(token_url, data=data)
return response.json()
return "授权失败"
if __name__ == "__main__":
app.run(port=8080) # 启动本地服务器
myapp://callback
):Info.plist
pywebview
或系统级钩子捕获回调。import webview
def handle_callback(url):
if "myapp://callback?code=" in url:
code = url.split("code=")[1].split("&")[0]
print("授权码:", code)
window = webview.create_window("Uber Auth", url=f"https://login.uber.com/oauth/v2/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri=myapp://callback")
webview.start(debug=True)
redirect_uri_mismatch
8081
)。localhost
,快速调试。client_secret
:不要硬编码在客户端,生产环境应使用后端服务交换Token。state
参数并校验回调。通过以上步骤,可顺利完成本机Python应用与Uber API的集成。
没有搜到相关的文章