2014-09-03 52 views
0

我需要我的Java(Swing)客户端应用程序能够在用户的Facebook个人资料上发布消息(包含链接和图片)(这需要用户登录Facebook和授权刊物)。Java客户端在Facebook上发布的最佳方法

我可以看到3个选项:

  1. 。利用直接RestFB API从Java的。但我不清楚我的应用程序如何与互联网浏览器交互(例如用户登录Facebook)。
  2. 让我的Java应用程序在应用程序的网站(我的PHP服务器)上打开浏览器并利用Facebook的PHP SDK(但这种情况具有在我的服务器上创建额外负载的缺点)
  3. 与(2 )但使用Facebook的JavaScript SDK(在这种情况下,我不知道如何发布本地存储的图片)

从我了解到目前为止,选项(3)似乎是最简单的(没有服务器负载,不需要应用程序令牌等)。

但是,因为我是新手,我正在寻找一些最简单的方法的指导。

非常感谢, 托马斯

回答

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); 
    } 
}); 

也就是说令牌,你可以将它保存在一个临时文件,或将其发送到您的Swing应用程序在许多方面。

+0

谢谢,但如果用户需要登录Facebook并授予我的应用权限,RestFB将如何打开Web浏览器?这对我来说真的不清楚。 Thx – Tom 2014-09-03 20:32:59

+0

我编辑了,也许它现在好多了 – 2014-09-03 20:37:19

+0

非常感谢,但我仍然没有得到RestFB如何能够与浏览器进行通信以获取授权令牌进行发布(它也需要从用户的Facebook帐号浏览器)? – Tom 2014-09-03 20:45:02

相关问题