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

Java对接Google Sheets API时如何设置LocalServerReceiver自定义RedirectUri

解决方案

前提配置

  • 首先在Google Cloud控制台对应的OAuth 2.0客户端ID配置中,将你的ngrok完整回调地址(示例:https://paradise.au.ngrok.io/Callback)添加到「授权重定向URI」列表中,否则Google会拒绝回调请求。
  • 启动ngrok时绑定本地8888端口,执行命令:ngrok http 8888,确保ngrok流量正常转发到本地服务端口。

代码实现方案

默认的LocalServerReceiver生成的重定向地址强制使用本地host+端口,我们可以通过继承重写getRedirectUri方法替换为ngrok地址,具体实现如下:

1. 自定义Ngrok适配的Receiver类

import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import java.io.IOException;

public class NgrokLocalServerReceiver extends LocalServerReceiver {
    // 替换为你自己的ngrok域名,不需要加后缀路径
    private static final String NGROK_DOMAIN = "https://paradise.au.ngrok.io";

    @Override
    public String getRedirectUri() throws IOException {
        // 先执行父类的服务启动逻辑,保留端口监听、回调处理的原有能力
        super.getRedirectUri();
        // 直接返回ngrok地址+默认回调路径,默认回调路径为/Callback
        return NGROK_DOMAIN + getCallbackPath();
    }
}

2. 替换原有Receiver实例

将原来的构造代码:

LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();

替换为自定义类的实例即可:

LocalServerReceiver receiver = new NgrokLocalServerReceiver.Builder().setPort(8888).build();

注意事项

  • 如果使用ngrok免费版,每次重启ngrok都会生成随机域名,需要同步更新Google Cloud控制台的重定向URI配置、以及代码中的NGROK_DOMAIN值。
  • 回调路径默认是/Callback,如果自定义过路径需要对应修改配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 17:06:07