我已经看到使用Javascript API和GET请求,可以从FanPages获取公开信息。 我想要实现的是一个Android Native App,它不会要求用户记录并使用FB App访问令牌获取并显示FB页面中的帖子。 我想知道这是否可以通过Android FB API实现,因为我可以通过网址来实现这一点,比如
https://graph.facebook.com/{page_id}/feed?fields=message,picture&limit=10&access_token={your_acces_token}
当我使用Android Graph API尝试此操作时,无需用户登录,
AccessToken.getCurrentAccessToken()
返回null
谢谢
答案 0 :(得分:3)
我一直在努力研究这段时间,经过几个小时的研究后我想出了这个(source):
@Override
protected void onCreate(Bundle savedInstanceState) {
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(getApplication());
AccessToken at = new AccessToken(getString(R.string.facebook_access_token), getString(R.string.facebook_app_id), getString(R.string.facebook_page_id), null, null, null, null, null);
Bundle parameters = new Bundle();
parameters.putString("fields", "message,created_time,link,full_picture");
new GraphRequest(at, "/" + at.getUserId() + "/feed", parameters, HttpMethod.GET, new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
Log.i(this.getClass().getName(), "onCompleted " + response.getRawResponse());
}
}).executeAsync();
}
我假设你已经拥有了一个页面访问令牌。我用Facebook的图形浏览器创建了我的。这是一个如何创建永不过期的教程: How to get a never expiring Facebook Page Access Token(寻找2016年方法)
据我所知,扩展令牌只要使用就不会过期。但我不确定。我想我在facebook api docs的某个地方发了这个红色但是再也找不到它了。
您可以设置许多其他参数。请参阅此处Page并查找“字段”
希望这个笨拙的解决方案对某人有所帮助。
答案 1 :(得分:2)
有两种方法可以做到这一点,它们都是documented here。
更简单的方法是简单地将AppID和AppSecret(在您的Facebook开发人员仪表板中找到)与“|”连接起来这样的角色:'App ID'+'|' +'App Secret'
警告! 如果有人决定仔细查看,这将在客户端代码中公开您的应用程序的私人凭证。因此,设置私有后端服务器作为移动应用程序用户对图API的用户访问权限的代理更加安全。
您可以使用单个公共路径设置您选择的任何语言的API,只需复制其收到的请求,附加凭据,将请求发送到Facebook,并将Facebook的响应传送回原始请求者。
例如:
没有访问令牌:
移动应用---> http://www.YourServerDomain/ {PAGE_ID} /饲料字段=消息,图片及安培;限制= 10
使用访问令牌:
您的服务器---> http://graph.facebook.com/ {PAGE_ID} /饲料字段=消息,图片及安培;限制= 10&安培; =的access_token的AppID | AppSecret
响应管道
Facebook ---> API结果--->你的服务器---> API结果--->移动应用程序