0

我在 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”。你能告诉我哪里出错了吗?

4

1 回答 1

0

(可能)出了什么问题

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

AccessToken at = new AccessToken(accessToken);

您之前设置的位置accessToken=""。这不太可能奏效。

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

你(可能)应该做什么

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

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

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

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

facebook.getOAuthAppAccessToken();

于 2016-05-26T01:06:05.133 回答