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”文件已加载并在网络视图中正确显示(嗯,几乎正确)。

实际问题是我不断收到 191 Facebook 错误,指出该链接不属于应用程序。由于互联网上有大量关于此的帖子和问题(是的,我检查并阅读了所有这些帖子和问题)这里是我已经知道的事情:

  • 我在 Facebook 开发者网站上注册了我的应用程序。我知道 AppID 和 Secret
  • 我知道这个错误主要是因为人们忘记在设置中设置他们的网站 URL 和域。问题是我没有网站。我只有一个简单的 .html 文件,我想在 javafx 内的 Web 视图中使用它。但是,我尝试了 stackoverflow、facebook 帮助中心和其他论坛上建议的所有可能组合,包括:将网站 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