我正在尝试在 android 上创建一个 facebook 应用程序,并且我正在使用 android facebook-sdk
。
我试图理解的例子是这个:
https://github.com/facebook/facebook-android-sdk/tree/master/examples/stream
这里有一些我不明白的地方,如果你能帮我解决一下就太好了。
在主要的 Activity
中的某个时刻正在做类似的事情:
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);
Session session = Session.restore(this);
if (session != null) {
dispatcher.runHandler("stream");
} else {
dispatcher.runHandler("login");
}
}
我不明白的是 Session.restore(this)
的工作方式。
restore
方法如下所示:
public static Session restore(Context context) {
if (singleton != null) {
if (singleton.getFb().isSessionValid()) {
return singleton;
} else {
return null;
}
}
SharedPreferences prefs =
context.getSharedPreferences(KEY, Context.MODE_PRIVATE);
String appId = prefs.getString(APP_ID, null);
if (appId == null) {
return null;
}
Facebook fb = new Facebook(appId);
fb.setAccessToken(prefs.getString(TOKEN, null));
fb.setAccessExpires(prefs.getLong(EXPIRES, 0));
String uid = prefs.getString(UID, null);
String name = prefs.getString(NAME, null);
if (!fb.isSessionValid() || uid == null || name == null) {
return null;
}
Session session = new Session(fb, uid, name);
singleton = session;
return session;
}
如果有人可以向我解释 SharedPreferences
的全部目的是什么,那里存储了什么以及为什么需要这两行:
fb.setAccessToken(prefs.getString(TOKEN, null));
fb.setAccessExpires(prefs.getLong(EXPIRES, 0));
最佳答案
当您访问任何 facebook
用户信息或任何其他需要 permission
访问的操作时,如下所示。 .如果用户按下 Allow
按钮,那么一个 Token
将被插入到他们的数据库中,其中包含 user Id
,your App Id
和验证时间
(可能是无限的)以及您可能执行的操作
(例如访问信息、发送电子邮件、访问帖子、张贴到墙上等.
),该特定的 Token
将返回给您,您保存该 Token
以访问该 token 允许的信息和其他操作。
每当您请求与该 token 匹配的任何操作时,检查验证,然后查看用户是否允许该操作,如果允许,您将被授权完成该操作。
关于android facebook 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6690344/