Java客户端在Facebook上发布的最佳方法

时间:2014-09-03 20:24:23

标签: java javascript php facebook facebook-graph-api

我需要我的Java(Swing)客户端应用程序能够在用户的Facebook个人资料上发布消息(带有链接和图片)(这需要用户登录Facebook并授权发布)。

我可以看到3个选项:

  1. 直接从Java使用RestFB API。但我不清楚我的应用程序如何与互联网浏览器互动(例如,用户登录Facebook)。
  2. 让我的java应用程序在应用程序的网站(我的PHP服务器)上打开浏览器并使用Facebook的PHP SDK(但这种情况的缺点是在我的服务器上创建了额外的负载)
  3. 与(2)相同但使用Facebook的Javascript SDK(在这种情况下我不确定如何发布本地存储的图片)
  4. 据我所知,到目前为止,选项(3)似乎最简单(没有服务器负载,不需要app令牌等)。

    但是,由于我对这一切都不熟悉,我正在寻找关于最简单方法的指导。

    非常感谢, 托马斯

1 个答案:

答案 0 :(得分:0)

我应该推荐使用RestFB API,它是为您所需要的而设计的。

要登录,您需要创建一个Facebook应用程序并使用它来为您的用户获取OAuth令牌,文档:https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.1

以下是完整文档:http://restfb.com/

由于您使用的是Swing,因此您必须打开浏览器,尝试使用以下代码段:

public static void openWebpage(URI uri) {
    Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
        try {
            desktop.browse(uri);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

public static void openWebpage(URL url) {
    try {
        openWebpage(url.toURI());
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
}

或者您可以使用其他方法: http://java.dzone.com/articles/web-browser-your-java-swing

----编辑----

由于您必须创建另一个应用程序来获取令牌,因此这不会成为问题。 您的swing应用程序调用Web应用程序进行登录。在它里面,你会得到一些像这样的代码:

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    console.log(response.authResponse.accessToken);
  }
});

这是令牌,您可以将其保存在临时文件中,或以多种方式将其发送到您的挥杆应用程序。