Java客户端在Facebook上发布的最佳方法
问题描述:
我需要我的Java(Swing)客户端应用程序能够在用户的Facebook个人资料上发布消息(包含链接和图片)(这需要用户登录Facebook和授权刊物)。Java客户端在Facebook上发布的最佳方法
我可以看到3个选项:
- 。利用直接RestFB API从Java的。但我不清楚我的应用程序如何与互联网浏览器交互(例如用户登录Facebook)。
- 让我的Java应用程序在应用程序的网站(我的PHP服务器)上打开浏览器并利用Facebook的PHP SDK(但这种情况具有在我的服务器上创建额外负载的缺点)
- 与(2 )但使用Facebook的JavaScript SDK(在这种情况下,我不知道如何发布本地存储的图片)
从我了解到目前为止,选项(3)似乎是最简单的(没有服务器负载,不需要应用程序令牌等)。
但是,因为我是新手,我正在寻找一些最简单的方法的指导。
非常感谢, 托马斯
答
我应该推荐使用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应用程序在许多方面。
谢谢,但如果用户需要登录Facebook并授予我的应用权限,RestFB将如何打开Web浏览器?这对我来说真的不清楚。 Thx – Tom 2014-09-03 20:32:59
我编辑了,也许它现在好多了 – 2014-09-03 20:37:19
非常感谢,但我仍然没有得到RestFB如何能够与浏览器进行通信以获取授权令牌进行发布(它也需要从用户的Facebook帐号浏览器)? – Tom 2014-09-03 20:45:02