【问题标题】:Facebook4j API : SearchFacebook4j API:搜索
【发布时间】:2013-08-01 05:44:41
【问题描述】:

我正在使用 Facebook4j 通过关键字获取状态

 facebook4j.conf.ConfigurationBuilder fac = new facebook4j.conf.ConfigurationBuilder();

            fac.setDebugEnabled(true)
              .setOAuthAppId("******")
              .setOAuthAppSecret("********")
              .setOAuthPermissions("email,publish_stream,...");
            FacebookFactory ff = new FacebookFactory(fac.build());
           facebook = ff.getInstance();
           new Thread(new Runnable() { 
               @Override
               public void run() {
                   try {
                       search();
                   }
                   catch (Exception e) {
                    // TODO: handle exception
                       System.out.println(e +" ERROOOOOOR");
                }}}).start();
}
//search
public void search() throws Exception {
         ResponseList<JSONObject> results = facebook.search("%23morocco");
         System.out.println(results);
         for (JSONObject result : results) {
             System.out.println(result);
         }

         results = facebook.search("orange", new Reading().until("yesterday"));
         System.out.println(results);
         for (JSONObject result : results) {
             System.out.println(result);
         }
     }

我用 facebook api 键替换了 * 我有一个异常问题,错误是: java.lang.IllegalStateException:没有可用的令牌。错了

【问题讨论】:

    标签: java android facebook


    【解决方案1】:

    这就是您可以在没有外部配置文件的情况下使用 facebook4j 的方式。下面的代码提供了一个最小的示例。这是我的简单演示:

    import facebook4j.Facebook;
    import facebook4j.FacebookException;
    import facebook4j.FacebookFactory;
    import facebook4j.auth.AccessToken;
    
    public class Facebook4JMinimalExample {
    
    /**
     * A simple Facebook4J client.
     * 
     * 
     * @param args
     * @throws FacebookException 
     */
    public static void main(String[] args) throws FacebookException {
    
    // Generate facebook instance.
    Facebook facebook = new FacebookFactory().getInstance();
    // Use default values for oauth app id.
    facebook.setOAuthAppId("", "");
    // Get an access token from: 
    // https://developers.facebook.com/tools/explorer
    // Copy and paste it below.
    String accessTokenString = "PASTE_YOUR_ACCESS_TOKEN_STRING_HERE";
    AccessToken at = new AccessToken(accessTokenString);
    // Set access token.
    facebook.setOAuthAccessToken(at);
    
    // We're done.
    // Write some stuff to your wall.
    facebook.postStatusMessage("Wow, it works...");
    }
    }
    

    请注意,首先调用“facebook.setOAuthAppId(..)”然后设置访问令牌很重要。否则,您将收到 IllegalStateException 提示“未提供 OAuth 应用程序 ID/秘密组合”。

    在这种情况下,我刚刚使用了 OAuthAppId 的默认值。

    【讨论】:

      【解决方案2】:

      您忘记使用fac.setOAuthAccessToken("*****") 设置访问令牌。来自docs(强调我的):

      所有 Graph API 搜索查询都需要使用 access_token=&lt;token&gt; 参数传入的 access token。您需要的访问令牌类型取决于您正在执行的搜索类型。

      • 搜索 pageplace 对象需要应用访问令牌。
      • 所有其他端点都需要用户访问令牌

      您可以为自己生成一个here,但请记住这些访问令牌有一个过期时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-24
        • 2013-11-12
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多