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

如何为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:35:35