0

私と私のチームは現在、大学でソフトウェア プロジェクトに取り組んでおり、現在のタスクは、デスクトップ javafx アプリケーションを Facebook にバインドすることです。

基本的に、コントローラーに fxml メソッドがあり、ユーザーが GUI で「共有」ボタンを押したときに呼び出されます。メソッドでは、WebView を使用して .html ファイルを単純に開きたいと思います。

@FXML
public void shareFacebookClicked() throws Exception{
    // Setting up the webview
    WebView webView = new WebView();
    final WebEngine webEngine = webView.getEngine();
    webEngine.setJavaScriptEnabled(true);

    // Read the html file and let the web engine load it.
    File file = new File(getClass().getClassLoader().getResource("facebook.html").toURI().getPath());
    webEngine.load(file.toURI().toURL().toString());
    Stage stage = new Stage();
    stage.initOwner(this.stage);
    stage.setScene(new Scene(webView, 1000, 800));
    stage.show();
}

問題はありません。「facebook.html」ファイルがロードされ、Web ビューで正しく (ほぼ正しく) 表示されます。

実際の問題は、リンクがアプリケーションによって所有されていないという 191 Facebook エラーが常に表示されることです。これについてはインターネット上にたくさんの投稿や質問があるので (私はそれらすべてをチェックして読みました)、私がすでに知っていることを以下に示します。

  • アプリケーションを Facebook 開発者サイトに登録しました。AppID と Secret について知っている
  • このエラーの主な原因は、人々がウェブサイトの URL とドメインを [設定] で設定するのを忘れていることです。問題は、私がウェブサイトを持っていないことです。javafx内のWebビューで使用したい単純な.htmlファイルがあります。ただし、stackoverflow、facebook ヘルプセンター、およびその他のフォーラムでアドバイスされているすべての可能な組み合わせを試しました。これには、Web サイト URL をhttp://localhost/に設定する、ドメインを localhost に設定する、組み込みブラウザー OAuth ログインを有効にする、リダイレクト URI を localhost に設定するなども含まれます。 .
  • 私の目標は、RESTfb、Facebook4j、または Graph API を使用して達成できると思います。それらを試したとき、ユーザー認証の問題に直面したため、停止しなければなりませんでした。また、この現在のオプションが最も簡単な方法であると考えました (この機能はソフトウェアで優先度が低いことを考慮して)。

これのどれも私の問題を解決しなかったため、答えの調査をあきらめ、私自身の個人的な質問を投稿することにしました. 私の意見では、.html ファイルに何らかのエラーがあるに違いないか、これが機能する方法を完全に誤解しています。.html ファイル:

<html>
  <head>
        <title> Share on Facebook </title>
        <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.1.js"></script>
        <script src="https://connect.facebook.net/en_US/all.js"></script>
        <script type="text/javascript">
        $(document).ready(function () {
              $('#shareonfacebook').click(function (e) {
                    FB.ui({
                          appId: 'MY_APP_ID',
                          display: "popup",
                          method: "feed",
                          name: "Test",
                          link:"",
                          caption:"Test",
                          description: "Test",
                    });
              });
        });
        </script>
  </head>
  <body>
       <div id="fb-root"></div>
       <button id="shareonfacebook" >Share</button>
        <script>
              FB.init({
                    appId : 'MY_APP_ID'
              });
        </script>
  </body>
</html>

部分的に、チュートリアル サイトからこのコードを取得しています。理論的にはうまくいくはずです。私が望むのは、ユーザーが私たちのソフトウェアを使用して完了したワークアウトの結果を公開できるダイアログが表示されることだけです。現在、.html ファイルを開くと、クリックするだけの簡単なボタンがあります。これと、javascript 内のすべての「テスト」文字列は、テスト専用です。壁に何かを投稿できるようにしたいだけです。次のステップはもちろん、投稿テキストを動的に設定するなどです。

私が間違っていること、または全体にどのように取り組むべきか教えてください。私が言ったように、タスクは最小限であるため、それほど難しくはないはずですが、2日間ラップトップの前に座っていましたが、成功しませんでした. 必要に応じて、より多くのコードを投稿したり、より多くの情報を提供したりする準備ができています。

事前に助けてくれてありがとう!

4

0 に答える 0