Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaFXWebView登录Microsoft OpenId_Java_Cookies_Javafx Webengine_Java 13 - Fatal编程技术网

使用JavaFXWebView登录Microsoft OpenId

使用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

我目前正在开发一个小应用程序,允许用户使用他们的一个社交平台登录。我已经使用Facebook和Google实现了OpenId登录,效果非常好。当我尝试使用Microsoft实现它时,问题就出现了

首先,我必须升级到Java13,因为我正在使用OpenJDK,因为它没有通过完整性检查,这在OpenJDKJava13中得到了解决

现在我面临无法登录的问题,因为Cookie被JavaFXWebView阻止。我用过这个答案,但运气不好

对以下请求“”的响应&response\u type=code&redirect\u uri=

uaid=3745b6b82c9a41ecac8f145573df4d9c&mkt=EN-US&lc=1033

公共无效microsoftLogin(){

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();
}