Java Facebook4j API:搜索
我正在使用Facebook4j通过关键字获取状态Java Facebook4j API:搜索,java,android,facebook,Java,Android,Facebook,我正在使用Facebook4j通过关键字获取状态 facebook4j.conf.ConfigurationBuilder fac = new facebook4j.conf.ConfigurationBuilder(); fac.setDebugEnabled(true) .setOAuthAppId("******") .setOAuthAppSecret("********")
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);
}
}
facebook4j.conf.ConfigurationBuilder fac=new facebook4j.conf.ConfigurationBuilder();
fac.setDebugEnabled(真)
.setOAuthAppId(“*******”)
.setOAuthAppSecret(“**********”)
.setOAuthPermissions(“电子邮件、发布流等”);
FacebookFactory ff=新的FacebookFactory(fac.build());
facebook=ff.getInstance();
新线程(新Runnable(){
@凌驾
公开募捐{
试一试{
搜索();
}
捕获(例外e){
//TODO:处理异常
系统输出打印ln(e+“errooor”);
}}}).start();
}
//搜寻
public void search()引发异常{
ResponseList results=facebook.search(“%23s”);
系统输出打印项次(结果);
for(JSONObject结果:结果){
系统输出打印项次(结果);
}
results=facebook.search(“橙色”,newreading()。直到(“昨天”);
系统输出打印项次(结果);
for(JSONObject结果:结果){
系统输出打印项次(结果);
}
}
我将*替换为facebook api密钥
我有一个异常问题,错误是:
java.lang.IllegalStateException:没有可用的令牌。errooooor您忘记使用
fac.setOAuthAccessToken(“*******”)
设置访问令牌。从(我的)重点:
所有Graph API搜索查询都需要一个带有access\u token=
参数的传入项。您需要的访问令牌类型取决于您正在执行的搜索类型
- 跨
和页面
对象进行搜索需要应用程序访问令牌位置
- 所有其他端点都需要用户访问令牌
您可以自己生成一个,但请记住,这些访问令牌有一个过期时间。这就是在没有外部配置文件的情况下使用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(..”,然后设置访问令牌非常重要。否则,您将得到一个非法状态异常,显示“未提供OAuth应用程序id/密码组合”
在本例中,我刚刚使用了OAuthAppId的默认值