使用JavaFXWebView登录Microsoft OpenId
我目前正在开发一个小应用程序,允许用户使用他们的一个社交平台登录。我已经使用Facebook和Google实现了OpenId登录,效果非常好。当我尝试使用Microsoft实现它时,问题就出现了 首先,我必须升级到Java13,因为我正在使用OpenJDK,因为它没有通过完整性检查,这在OpenJDKJava13中得到了解决 现在我面临无法登录的问题,因为Cookie被JavaFXWebView阻止。我用过这个答案,但运气不好 对以下请求“”的响应&response\u type=code&redirect\u uri= 是 uaid=3745b6b82c9a41ecac8f145573df4d9c&mkt=EN-US&lc=1033 公共无效microsoftLogin(){使用JavaFXWebView登录Microsoft OpenId,java,cookies,javafx-webengine,java-13,Java,Cookies,Javafx Webengine,Java 13,我目前正在开发一个小应用程序,允许用户使用他们的一个社交平台登录。我已经使用Facebook和Google实现了OpenId登录,效果非常好。当我尝试使用Microsoft实现它时,问题就出现了 首先,我必须升级到Java13,因为我正在使用OpenJDK,因为它没有通过完整性检查,这在OpenJDKJava13中得到了解决 现在我面临无法登录的问题,因为Cookie被JavaFXWebView阻止。我用过这个答案,但运气不好 对以下请求“”的响应&response\u type=code&re
WebView-WebView=new-WebView();
阶段=新阶段();
阶段.初始模态(模态.应用\模态);
stage.initOwner(ancorpane.getScene().getWindow());
stage.initStyle(StageStyle.UTILITY);
舞台场景(新场景(网络视图));
stage.sizeToScene();
Oauth2 microsoftLogin=新的Oauth2().setURL(“https://login.live.com/oauth20_authorize.srf")
.addScope(“openid”)
.setRedirectUri(“https://login.live.com/oauth20_desktop.srf")
.setClientId(“05f57f35-f90e-4478-ab29-50a838eabdce”)
.setResponseType(“代码”)
.build();
试一试{
映射头=新建LinkedHashMap();
headers.put(“Set Cookie”,Arrays.asList());
java.net.CookieHandler.getDefault().put(URI.create()https://login.live.com",标题),;
if(webview.getEngine().getLoadWorker().getState()==Worker.State.READY){
加载(microsoftLogin.toString());
webview.getEngine().locationProperty().addListener((observeValue,s,t1)->{
系统输出打印项次(t1);
System.out.println(GoogleAccess.cookies().getCookieStore().getCookies().toString());
});
}
}捕获(IOException异常){
异常。printStackTrace();
}
stage.show();
}
有人已经面对过这个问题了吗?我正在考虑完全放弃与微软的登录,但不想将我的用户限制在Facebook和Goole上,我很确定这涵盖了绝大多数用户在你提出问题11个月后,我发布了这篇文章,到目前为止,微软OpenId与OpenJFX和Java 11或更高版本不兼容 Microsoft用户代理库在MIT许可证下。有必要在那里进行修改 更多信息请点击此处:
WebView webview = new WebView();
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);
stage.initOwner(anchorPane.getScene().getWindow());
stage.initStyle(StageStyle.UTILITY);
stage.setScene(new Scene(webview));
stage.sizeToScene();
Oauth2 microsoftLogin = new Oauth2().setURL("https://login.live.com/oauth20_authorize.srf")
.addScope("openid")
.setRedirectUri("https://login.live.com/oauth20_desktop.srf")
.setClientId("05f57f35-f90e-4478-ab29-50a838eabdce")
.setResponseType("code")
.build();
try {
Map<String, List<String>> headers = new LinkedHashMap<>();
headers.put("Set-Cookie", Arrays.asList());
java.net.CookieHandler.getDefault().put(URI.create("https://login.live.com"), headers);
if(webview.getEngine().getLoadWorker().getState() == Worker.State.READY) {
webview.getEngine().load(microsoftLogin.toString());
webview.getEngine().locationProperty().addListener((observableValue, s, t1) -> {
System.out.println(t1);
System.out.println(GoogleAccess.cookies().getCookieStore().getCookies().toString());
});
}
}catch (IOException exception){
exception.printStackTrace();
}
stage.show();
}