无需登录即可访问Facebook Graph API

时间:2015-11-04 21:01:04

标签: android facebook facebook-graph-api

我已经看到使用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

谢谢

2 个答案:

答案 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结果--->移动应用程序

相关问题