簡體   English   中英

適用於GWT(JSNI)客戶端的U2F JavaScript

[英]U2F JavaScript for Client Side in GWT (JSNI)

我正在嘗試使用以下源代碼從GWT項目中的U2F令牌獲得響應:

public class Test implements EntryPoint {

    @Override
    public void onModuleLoad() {
         Window.alert("Alert 3:"+u2FTest());
    }

    public static native String u2FTest()/*-{
    var respond = {rep: "Clear"};
    var RegistrationData = {"challenge":"dG7vN-E440ZnJaKQ7Ynq8AemLHziJfKrBpIBi5OET_0",
                            "appId":"https://localhost:8443",
                            "version":"U2F_V2"};
 $wnd.u2f.register([RegistrationData], [],
  function(data) {if(data.errorCode) {
        alert("U2F failed with error: " + data.errorCode);
        return;
    }

    respond.rep=JSON.stringify(data);
    alert("Alert 1: "+respond.rep); 
});
 alert("Alert 2: "+respond.rep);
 return respond.rep;
}-*/;

}

由於某些原因,我收到這樣的警報:

  1. (警報2)首先顯示“清除”結果
  2. (警報3)帶有“清除”
  3. (警報1)具有令牌響應

通常,我必須先獲得Token響應(警報1),然后是2,3。 因此,在獲得令牌響應之前,如何停止執行?謝謝,

擁抱異步!

public static native void u2FTest(com.google.gwt.core.client.Callback<String, Integer> callback) /*-{
  // …
  $wnd.u2f.register(regReqs, signReqs, $entry(function(response) {
    if (response.errorCode) {
      callback.@com.google.gwt.core.client.Callback::onFailure(*)(@java.lang.Integer::valueOf(I)(response.errorCode));
    } else {
      callback.@com.google.gwt.core.client.Callback::onSuccess(*)(JSON.stringify(response));
    }
  }));
}*-/;

(不要忘記將回調包裝在$entry()以便將異常路由到GWT.UnhandledExceptionHandler ,如果有的話)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM