我正在开发一个 android 应用程序,您可以在其中查看 facebook 用户的相册。当我将访问令牌添加到通过facebook 开发人员工具手动生成的HttpGet 请求时,我有一个解决方案。
通过 android/java 创建这样的访问令牌的正确方法是什么?有没有办法在不使用facebook android sdk的情况下获得一个?
我正在开发一个 android 应用程序,您可以在其中查看 facebook 用户的相册。当我将访问令牌添加到通过facebook 开发人员工具手动生成的HttpGet 请求时,我有一个解决方案。
通过 android/java 创建这样的访问令牌的正确方法是什么?有没有办法在不使用facebook android sdk的情况下获得一个?
根据您的评论,让我提出一些建议。在我开始之前,让我也澄清一些关于你当前情况的事情。
只要访问令牌有效,您当前通过手动放入数据的方式Access Token
将起作用。访问令牌有期限。之后,分配一个新的访问令牌。只要它有效,一切都很好。您的应用程序可以正常工作,您的用户将能够根据查询查看相册。
难度将在访问令牌到期时开始。Facebook 不会在到期时通知您,因此您无法知道何时采取纠正措施。
现在,因为您在您的 中对访问令牌进行硬编码Activity
,所以每次访问令牌过期时,您都必须使用更新的访问令牌进行推送和更新。
希望你能看到我的目标。
建议:
一:
保持现状,我怀疑,当访问令牌过期时,你将不得不面对用户的愤怒(阅读、负面评价和评论)。更不用说,为了修复过期的访问令牌,必须在用户看不到任何更改、添加或改进的地方推送更新。我不知道这将如何成为一个富有成效的练习。
二:
最简单的做法是将 Facebook SDK 集成到您的应用程序中,即使对于像访问令牌这样简单的东西来说这听起来太重要了。这样做的直接好处(对您的用户而言)是,您的用户将始终对您的应用程序拥有无缝体验。对你来说,它会省去很多我之前已经说过的头痛。
底线
如果不使用与平台相关的 SDK,则无法获得动态访问令牌。在这种情况下,android。您可以继续使用相同的方法来提取数据,但使用动态访问令牌。
要了解有关访问令牌的更多信息并了解它们的工作原理,请访问此链接:https ://developers.facebook.com/docs/concepts/login/access-tokens-and-types/
您是否阅读了新 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);
}
}
}