问题描述
我正在开发一个与谷歌 API(谷歌表 API)集成的 Java 应用程序
我正在尝试遵循 google 开发者网站中提供的示例。链接:https://developers.google.com/sheets/api/quickstart/java#step_3_set_up_the_sample
他们使用 LocalServerReceiver 创建了如下所示的重定向 uri。
LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
它正在 com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp => authorize() 方法中使用,如下所示:
String redirectUri = receiver.getRedirectUri();
这是receiver.getRedirectUri() 生成uri的方式:
public String getRedirectUri() throws IOException {
server = HttpServer.create(new InetSocketAddress(port != -1 ? port : findOpenPort()),0);
HttpContext context = server.createContext(callbackPath,new CallbackHandler());
server.setExecutor(null);
try {
server.start();
port = server.getAddress().getPort();
} catch (Exception e) {
Throwables.propagateIfPossible(e);
throw new IOException(e);
}
return "http://" + this.getHost() + ":" + port + callbackPath;
}
因为我是在本地主机上运行的,所以 getRedirectUri() 返回一个像这样的网址:
http://localhost:8888/Callback
我想要的是提供一个自定义 url,因为我使用 ngrok 来公开我的本地主机。
例如:如果我访问将指向我的本地主机的网址“paradise.au.ngrok.io”。
所以我需要传递“paradise.au.ngrok.io”作为重定向网址。
有人能帮我实现这个目标吗?
谢谢。
解决方法
您可以简单地使用 setHost()
方法并将重定向 URI 设置为您的 ngrok 之一。