如何为Tauri应用配置自定义URI Schema以实现Google OAuth回调?
Tauri应用配置自定义URI Scheme实现Google OAuth回调
要实现myapp://callback这类自定义URI回调,register_uri_scheme_protocol是正确的选择——WindowUrl仅用于指定应用窗口初始加载的地址,无法处理自定义协议的请求逻辑。下面是完整的配置和实现步骤:
1. 在tauri.conf.json中注册URI Scheme
打开项目根目录下的tauri.conf.json,在tauri > bundle节点下添加protocols字段,注册你的自定义协议:
{ "tauri": { "bundle": { "identifier": "com.yourdomain.myapp", "protocols": [ { "name": "myapp", "schemes": ["myapp"], "privileged": true } ] } } }
privileged设为true是让应用获得处理该协议请求的权限。
2. 在Rust代码中处理协议回调
你之前的代码方向是对的,补充完整回调逻辑即可。当外部请求myapp://callback时,我们需要解析请求中的授权码,再传递给前端或直接处理:
use tauri::{AppHandle, HttpRequest, HttpResponse}; fn main() { tauri::Builder::default() .invoke_handler(tauri::generate_handler![greet]) .register_uri_scheme_protocol("myapp", move |app, request| { // 解析回调URL中的授权码参数 let url = url::Url::parse(request.uri()).unwrap(); let auth_code = url.query_pairs() .find(|(key, _)| key == "code") .map(|(_, val)| val.to_string()); // 将授权码传递给前端页面处理 if let Some(code) = auth_code { app.emit_all("oauth_auth_code_received", code).unwrap(); } // 返回简单响应,提示用户授权完成 HttpResponse::new(200, "授权完成,可关闭此窗口".as_bytes().to_vec()) }) .run(tauri::generate_context!()) .expect("运行Tauri应用出错"); } // 示例handler #[tauri::command] fn greet(name: &str) -> String { format!("Hello, {}!", name) }
3. Google OAuth控制台配置回调URI
登录Google Cloud控制台,找到你的OAuth客户端,在「已授权的重定向URI」中添加:
myapp://callback
完成以上配置后,用户完成Google授权后会自动跳转到myapp://callback,你的Tauri应用就能捕获请求并处理授权码了。
内容的提问来源于stack exchange,提问作者Eli Front
相关产品推荐
相关产品推荐

