OAuthアクセストークンを取得するためにPushbullet認証Webページを開くことを目的とした小さなJavaFXアプリに取り組んでいます。JavaFX での記述は非常に簡単でした。ただし、フォームに入力して Google アカウントを使用して検証すると、認証に失敗します。ネイティブの Chrome ブラウザーで URL を開くと同じように機能するため、この問題は JavaFX WebEngine 実装の制限された機能に関連していると思いますが、それが何であるかはわかりません。
以下は、私が使用したコードです。
import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Screen;
import javafx.stage.Stage;
public class GraphicalAuthorizationHelper extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(final Stage stage) throws Exception {
BorderPane borderPane = new BorderPane();
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
borderPane.setCenter(browser);
webEngine.documentProperty().addListener((prop, oldDoc, newDoc) -> {
//enableFirebug(webEngine);
});
String url = "https://www.pushbullet.com/authorize?client_id=hjT07gVHUYnzN1iVlWIFU7K1Sxype0bf&redirect_uri=http://oauth.yfiton.com/callback&response_type=token";
webEngine.load(url);
Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
Scene scene = new Scene(
borderPane,
primaryScreenBounds.getWidth() * 0.55,
primaryScreenBounds.getHeight() * 0.65);
stage.setScene(scene);
stage.show();
}
private static void enableFirebug(final WebEngine engine) {
engine.executeScript("if (!document.getElementById('FirebugLite')){E = document['createElement' + 'NS'] && document.documentElement.namespaceURI;E = E ? document['createElement' + 'NS'](E, 'script') : document['createElement']('script');E['setAttribute']('id', 'FirebugLite');E['setAttribute']('src', 'https://getfirebug.com/' + 'firebug-lite.js' + '#startOpened');E['setAttribute']('FirebugLite', '4');(document['getElementsByTagName']('head')[0] || document['getElementsByTagName']('body')[0]).appendChild(E);E = new Image;E['setAttribute']('src', 'https://getfirebug.com/' + '#startOpened');}");
}
}
このコードを使用して Twitter または Slack の Oauth アクセス トークンを取得することはできますが、Pushbullet 認証メカニズムでは成功しないことに気付きました。フォームが送信されると、「アカウントにサインイン中にエラーが発生しました: サーバーに接続できませんでした: 」というエラーが表示されます。
約 2 週間前に Pushbullet チームにメールを送信しましたが、返信がありません。それまでの間、私は firebug を使用して何が問題なのかを理解しようとしましたが、成功しませんでした:
感想、コメントなどなんでもどうぞ。