我正在尝试制作一个简单的程序,一次在页面的墙上发布5-10个状态。页面的帖子必须在页面名称下完成。
我已经阅读了大量写得不好的Facebook开发者文档,而且我甚至无法知道要问什么问题。所以我就是她。
我通过以下方法手动获取了页面访问令牌:
因此,手动获取页面访问令牌(当然还有页面的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++;
}
}
以上代码有效。事情是,暂时有效。我得到的page access token
的到期时间为一小时,每次运行程序时,我都需要手动完成获取它的过程。如果我将手册的某些方面手动保留,那么自动化流程的重点是什么?
所以我必须问你:我可以通过编程方式执行上述过程,并在程序启动时获得新的page access token
吗?
我可以使用更好的API来做一些像这样简单的事情,只需每天在网页上发布一些内容吗?
我的应用程序是一个控制台,我想远离实现不必要的登录,即使你告诉我它是必要的,它将是一个麻烦我将不得不经历。
作为备注:我已经在Facebook开发者中注册了应用程序,尽管只是作为基本应用程序。为了获得更多权限,我需要显示Facebook登录实施的证据,正如我在标题中所说,这是我必须避免的事情。
答案 0 :(得分:2)
没有自动过程来获取访问令牌。如果有,它将击败OAuth流程的整个目的。对于宠物项目和测试,可以使用Graph API Explorer,但对于涉及用户的公共应用程序,用户必须手动选择登录对话框。
在您当前的情况下,您可以使用此处提到的方法https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
扩展用户令牌场景5:页面访问令牌
当用户授予应用manage_pages权限时,该应用就可以了 获取用户管理的页面的页面访问令牌 查询[用户ID] /帐户图谱API端点。随着迁移 启用时,使用短期用户访问令牌进行查询 端点,获得的页面访问令牌也是短暂的。
交换短期用户访问令牌以进行长期访问 使用端点的令牌和前面解释的步骤。
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
使用 长期用户访问令牌,查询[用户ID] /帐户端点 现在将提供页面访问令牌,这些令牌不会过期 用户管理。查询非过期时也适用 通过已弃用的offline_access获取的用户访问令牌 权限。
仅由应用程序所有者使用的简单程序不需要Facebook批准。