Java+;restfbapi:在不影响AppID、appSecret的情况下获取新的页面访问令牌 我想做的是:
我试图制作一个简单的程序,在页面的墙上一次发布5-10个状态。必须以页面的名称发布到该页面 我已经阅读了大量写得很糟糕的Facebook开发者文档,我已经到了困惑的地步,甚至不知道该问什么问题。我就是她Java+;restfbapi:在不影响AppID、appSecret的情况下获取新的页面访问令牌 我想做的是:,java,facebook,facebook-graph-api,restfb,Java,Facebook,Facebook Graph Api,Restfb,我试图制作一个简单的程序,在页面的墙上一次发布5-10个状态。必须以页面的名称发布到该页面 我已经阅读了大量写得很糟糕的Facebook开发者文档,我已经到了困惑的地步,甚至不知道该问什么问题。我就是她 到目前为止,我的代码是: 我通过以下方法手动获取页面访问令牌: 去 在下面的GET申请表上,填写我/账户 您将获得基本用户数据的Javascript表示。找到你想要的页面 注意access_token和id字段,我们将在下面的代码中使用它们 因此,在手动获取页面访问令牌(当然还有页面ID)之后
到目前为止,我的代码是: 我通过以下方法手动获取页面访问令牌:
问题是: 上面的代码可以工作。问题是,它可以临时工作。我获取的
页面访问令牌
的过期时间为一小时,每次运行程序时,我都需要手动完成获取该令牌的过程。如果我将流程的某些方面保留为手册,那么自动化流程的意义何在
因此,我必须问您:我能否以编程方式执行上述过程,并在程序启动时获得一个新的页面访问令牌
我可以,也许,使用一个更好的API来做一些简单的事情,比如每天在一个页面的墙上张贴一些东西吗
我的应用程序是一个控制台应用程序,我希望不要实现不必要的登录,即使你告诉我这是必要的,这将是一个麻烦,我将不得不通过
请注意:我已经在Facebook开发者那里注册了这个应用程序,尽管它只是一个基本的应用程序。要获得更多权限,我需要出示Facebook登录实现的证明,正如我在标题中所说,这是我必须避免的。没有自动获取访问令牌的过程。如果有,它将破坏OAuth流的整个目的。对于pet项目和测试,可以使用Graph API Explorer,但对于涉及用户的公共应用程序,用户必须手动选择登录对话框 在当前场景下,可以使用此处提到的方法扩展用户令牌 场景5:页面访问令牌 当用户授予应用程序“管理页面”权限时,该应用程序可以 为用户管理的页面获取页面访问令牌 查询[User ID]/accounts图形API端点。随着移民 已启用,当使用短期用户访问令牌查询此 端点时,获得的页面访问令牌也是短期的 将短期用户访问令牌交换为长期访问令牌 使用前面介绍的端点和步骤的令牌 通过使用 长寿命用户访问令牌,查询[user ID]/accounts端点 现在将为以下页面提供不会过期的页面访问令牌: 用户管理。这也适用于使用非过期的 通过不推荐的脱机\u访问获得的用户访问令牌 允许 仅由应用程序所有者使用的简单程序不需要Facebook的批准
e、 g.谢谢你的澄清,伙计。2015年快乐!
import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.Parameter;
import com.restfb.exception.FacebookException;
import com.restfb.types.FacebookType;
import com.restfb.types.Page;
import com.restfb.types.User;
/**
*
* @author dsfounis
*/
public class FacebookConnector {
/* Variables */
private final String pageAccessToken = "GOT_THIS_FROM_THE_METHOD_ABOVE";
private final String pageID = "THIS_TOO";
private FacebookClient fbClient;
private User myuser = null; //Store references to myr user and page
private Page mypage = null; //for later use. In this question's context, these
//references are useless.
private int counter = 0;
public FacebookConnector() {
try {
fbClient = new DefaultFacebookClient(pageAccessToken);
myuser = fbClient.fetchObject("me", User.class);
mypage = fbClient.fetchObject(pageID, Page.class);
counter = 0;
} catch (FacebookException ex) { //So that you can see what went wrong
ex.printStackTrace(System.err); //in case you did anything incorrectly
}
}
public void makeTestPost() {
fbClient.publish(pageID + "/feed", FacebookType.class, Parameter.with("message", Integer.toString(counter) + ": Hello, facebook World!"));
counter++;
}
}
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN