-2

我正在开发一个 android 应用程序,您可以在其中查看 facebook 用户的相册。当我将访问令牌添加到通过facebook 开发人员工具手动生成的HttpGet 请求时,我有一个解决方案。

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

4

2 回答 2

2

根据您的评论,让我提出一些建议。在我开始之前,让我也澄清一些关于你当前情况的事情。

只要访问令牌有效,您当前通过手动放入数据的方式Access Token将起作用。访问令牌有期限。之后,分配一个新的访问令牌。只要它有效,一切都很好。您的应用程序可以正常工作,您的用户将能够根据查询查看相册。

难度将在访问令牌到期时开始。Facebook 不会在到期时通知您,因此您无法知道何时采取纠正措施。

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

希望你能看到我的目标。

建议:

一:

保持现状,我怀疑,当访问令牌过期时,你将不得不面对用户的愤怒(阅读、负面评价和评论)。更不用说,为了修复过期的访问令牌,必须在用户看不到任何更改、添加或改进的地方推送更新。我不知道这将如何成为一个富有成效的练习。

二:

最简单的做法是将 Facebook SDK 集成到您的应用程序中,即使对于像访问令牌这样简单的东西来说这听起来太重要了。这样做的直接好处(对您的用户而言)是,您的用户将始终对您的应用程序拥有无缝体验。对你来说,它会省去很多我之前已经说过的头痛。

底线

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

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

于 2012-11-14T11:26:48.537 回答
-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);
      }
    }
}
于 2012-11-14T10:16:28.113 回答