获取Facebook访问令牌

时间:2012-11-14 10:11:55

标签: android facebook-graph-api

我正在开发一个Android应用程序,您可以在其中查看Facebook用户的photoalbums。当我将访问令牌添加到通过facebook developer tools手动生成的 HttpGet请求时,我有一个解决方案。

通过android / java创建这样的访问令牌的正确方法是什么?有没有办法在不使用 facebook android sdk 的情况下获得一个?

2 个答案:

答案 0 :(得分:2)

根据您的评论,让我提出一些建议。在我谈到这一点之前,让我在你当前的情况中澄清一些事情。

只要访问令牌有效,当前通过手动输入Access Token来提取数据的方式就可以正常工作。访问令牌有一个到期。之后,分配新的访问令牌。只要它有效,一切都很好。您的应用可以正常运行,您的用户将能够根据查询查看photoalbums。

当访问令牌过期时,难度将开始。 Facebook在到期时不会与您保持密切关系,因此,您无法知道何时采取纠正措施。

现在,因为您正在对Activity中的访问令牌进行硬编码,所以每次访问令牌到期时,您都必须使用更新的访问令牌进行推送和更新。

你可以看到,我希望能够实现这一目标。

建议:

一:

保持现状,我怀疑,当访问令牌过期时,您必须面对用户的愤怒(阅读,否定评级和评论)。更不用说,必须推送更新,用户不会看到任何更改,添加或改进只是为了修复过期的访问令牌。我不知道这将是一项富有成效的练习。

两个

最简单的方法是将Facebook SDK集成到您的应用程序中,即使这对于像访问令牌这样简单的事情来说听起来也太重要了。对您的用户而言,直接的好处是,您的用户将始终拥有与您的应用程序无缝的体验。对你来说,它会省去我早些时候已经说过的很多麻烦。

底线

如果不使用与平台相关的SDK,则无法获得动态访问令牌。在这种情况下,。您可以继续使用相同的方法来提取数据,但使用动态访问令牌。

要了解有关访问令牌的更多信息并了解其工作原理,请访问以下链接:https://developers.facebook.com/docs/concepts/login/access-tokens-and-types/

答案 1 :(得分:-1)

您是否阅读过新SDK的文档?它自动完成。

public class MainActivity extends FacebookActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      this.openSession();
   }

    @Override
    protected void onSessionStateChange(SessionState state, Exception exception) {
      // user has either logged in or not ...
      if (state.isOpened()) {
        // make request to the /me API
        Request request = Request.newMeRequest(
          this.getSession(),
          new Request.GraphUserCallback() {
            // callback after Graph API response with user object
            @Override
            public void onCompleted(GraphUser user, Response response) {
              if (user != null) {
                TextView welcome = (TextView) findViewById(R.id.welcome);
                welcome.setText("Hello " + user.getName() + "!");
              }
            }
          }
        );
        Request.executeBatchAsync(request);
      }
    }
}