我想做的事:
我正在尝试制作一个简单的程序,一次在页面墙上发布 5-10 个状态。必须完成页面的发布在页面名称下.
我读过大量写得很糟糕的 Facebook 开发者文档,我已经到了困惑的地步,我什至不知道该问什么问题。所以我就是她。
到目前为止我的代码:
我通过以下方法手动获取页面访问令牌:
- Go to https://developers.facebook.com/tools/explorer https://developers.facebook.com/tools/explorer
- 在 GET 请求表中,填写 me/accounts
- 您将获得基本用户数据的 Javascript 表示形式。找到您想要的页面。
- 请注意 access_token 和 id 字段,我们将在下面的代码中使用它们。
因此,在手动获取页面访问令牌后(当然还有页面的 ID)
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++;
}
}
问题:
上面的代码有效。事情是,它暂时有效. The page access token
我得到的过期时间为一小时,每次运行程序时我都需要手动完成获取它的过程。如果我将流程的某些方面保留为手动,那么自动化流程有什么意义呢?
所以我要问你:我可以以编程方式完成上述过程吗,并获得新鲜的page access token
在程序启动时?
也许我可以使用更好的 API 来做一些简单的事情每天只是在主页墙上发布一些内容吗?
我的应用程序是一个控制台应用程序,我希望避免实现不必要的登录,即使您告诉我需要它,这将是我必须经历的麻烦。
作为注释:我已经在 Facebook Developers 中注册了该应用程序,尽管只是作为一个基本应用程序。为了获得更多权限,我需要出示 Facebook 登录实施的证明,正如我在标题中所说,这是我必须避免的事情。