
访问authorize变量地址登录账户以后会重定向到一个新地址,此时该怎么返回呢?
在Java开了授权地址后,如果授权成功并重定向到一个新的地址,无法直接从Java程序中获取重定向后的地址。 是因为Java程序调用系统默认浏览器后,程序无法直接获取浏览器中的内容或重定向后的地址。这是由浏览器的安全策略所决定的。
有几种可能的解决办法:
手动复制重定向后的地址:你可以在浏器中登录成功后手动复制重地址将其粘贴到Java程序中。
使用回调URL参数:在授权地址中,你可以指定一个调URL参数,这个参数可以是你己的服务端接口。当授权成功后,定向的地址递给你的服务端接口。然后,调用接口来获取重定向后浏些浏览器操作。通过编程控制浏览器,在Java程序中可以获取重定向后额赖复杂性。
根据你的具体需求和场景选择合适的方法。
有几种可能的解决办法:
手动复制重定向后的地址:你可以在浏器中登录成功后手动复制重地址将其粘贴到Java程序中。
使用回调URL参数:在授权地址中,你可以指定一个调URL参数,这个参数可以是你己的服务端接口。当授权成功后,定向的地址递给你的服务端接口。然后,调用接口来获取重定向后浏些浏览器操作。通过编程控制浏览器,在Java程序中可以获取重定向后额赖复杂性。
根据你的具体需求和场景选择合适的方法。
关于如何用Java调用系统浏览器后怎么返回重定向后的地址
在Java中,可以使用Desktop类来用系统默认的浏览器,并获取重定向后的地址。以下是一个示```java importktop; import java.io.IOException; import java.net.URI; import java.net.UR public static void main(String[] args) { url = "www.example.com";
try {
// 创建一个URI对象
URI uri = new URI(url);
// = Desktop.getDesktop();
// 调用默认的浏 desktop(uri);
// 在浏览器启动等待一点时间,以便获取重定向后的地址
Thread.sleep(5000);
//的地址
String redirected desktop.getBrowseURL().toString();
定向后地址:" + redirectedUrl); } catch (IOException |ISyntaxException | InterruptedException e) { e.printStackTrace(); } } }
上述代码首指定要打开的URL。然后,通过`Desktop`类的`browse()`方法调的浏览器打开接下来,程序通过调.sleep()`方法暂停执行5秒钟,览器完成重定向。
最后,可以使用`getBrowseURL()`获取重定后的地址将其印出来。
请注意,这里使用了`Thread.sleep()`以等待浏览器加载页面完成,但实际中可能需要调整等待保获得的重定向地址是最新另外,还需注意适可能的异常情况。
在Java中,可以使用Desktop类来用系统默认的浏览器,并获取重定向后的地址。以下是一个示```java importktop; import java.io.IOException; import java.net.URI; import java.net.UR public static void main(String[] args) { url = "www.example.com";
try {
// 创建一个URI对象
URI uri = new URI(url);
// = Desktop.getDesktop();
// 调用默认的浏 desktop(uri);
// 在浏览器启动等待一点时间,以便获取重定向后的地址
Thread.sleep(5000);
//的地址
String redirected desktop.getBrowseURL().toString();
定向后地址:" + redirectedUrl); } catch (IOException |ISyntaxException | InterruptedException e) { e.printStackTrace(); } } }
上述代码首指定要打开的URL。然后,通过`Desktop`类的`browse()`方法调的浏览器打开接下来,程序通过调.sleep()`方法暂停执行5秒钟,览器完成重定向。
最后,可以使用`getBrowseURL()`获取重定后的地址将其印出来。
请注意,这里使用了`Thread.sleep()`以等待浏览器加载页面完成,但实际中可能需要调整等待保获得的重定向地址是最新另外,还需注意适可能的异常情况。
首先,看你在使用 Minecraft Launcher 的登录方式。
在这种情况下,如果想让浏览器向 Java 返回 URL 的话,需要 Java 和浏览器之间有一定的通讯机制。例如 WebDriver。
但是,这样又会引入过多的依赖;所以,个人认为让用户在跳转后复制粘贴跳转后的 URL 比较好。
如果你使用自行申请的 Microsoft OAuth 密钥的话,那么就简单多了。可以让用户在浏览器中打开一个 URL,输入一个认证代码,并完成登录就好。
具体实现,详见 https://learn.microsoft.com/zh-cn/azure/active-directory/develop/v2-oauth2-device-code 。
在这种情况下,如果想让浏览器向 Java 返回 URL 的话,需要 Java 和浏览器之间有一定的通讯机制。例如 WebDriver。
但是,这样又会引入过多的依赖;所以,个人认为让用户在跳转后复制粘贴跳转后的 URL 比较好。
如果你使用自行申请的 Microsoft OAuth 密钥的话,那么就简单多了。可以让用户在浏览器中打开一个 URL,输入一个认证代码,并完成登录就好。
具体实现,详见 https://learn.microsoft.com/zh-cn/azure/active-directory/develop/v2-oauth2-device-code 。