使用facebook4j访问Facebook帐户

时间:2016-05-25 19:03:34

标签: javafx facebook4j

我在JavaFX中写了这样的东西。

public class ShareOn {
    private static String appId = "", appSecret = "", accessToken="";
    private static Facebook facebook = null;
    private static void createFbConnection()
    {
    facebook = new FacebookFactory().getInstance();
    facebook.setOAuthAppId(appId, appSecret);       
    AccessToken at = new AccessToken(accessToken);
    facebook.setOAuthAccessToken(at);
}
public static void shareOnFacebook()
{
    createFbConnection();
    try{
        facebook.postStatusMessage("Hello World from Facebook4J.");
    }catch(Exception ex){
        ex.getMessage();
    }
}

我在Facebook上为开发者创建了一个新应用。从那里我有“appId”,“appSecret”。你能告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

什么(可能)出错

我现在根本没有Facebook API,但这条线看起来很奇怪:

AccessToken at = new AccessToken(accessToken);

您之前设置accessToken=""的位置。这不太可行。

访问令牌应该是一个短暂的事情,您应该通过API调用获得。它与appId和appSecret不同,它们不会改变。您没有进行API调用以从Facebook检索新的访问令牌(这就是为什么没有任何反应 - 您没有做任何事情)。

你(可能)应该做什么

您应该从Facebook获得有效的访问令牌,可能通过某种类型的Facebook API调用。

您需要做什么取决于您想要获取的访问令牌的类型。看facebook4j doc,Facebook似乎有不同的类型:用户访问,应用访问,页面访问和设备访问。

如果是用户访问权限,那么您可能需要运行某种嵌入式浏览器(可能是Web视图,也许还有一些服务器端代码,以便在Web视图中提供内容并与Facebook集成)以允许用户访问通过Facebook进行身份验证,以获取其帐户的访问令牌。获得用户访问权限可能非常棘手,因为facebook4j provided sample通过基于JSP驱动的基于服务器的Web应用程序而不是像JavaFX那样的Java客户端应用程序来实现这一点。

如果它是应用程序访问权限,事情应该相当容易,似乎有一个API,希望它(不用希望)不需要您预先验证用户:

facebook.getOAuthAppAccessToken();