android facebook 应用程序

标签 android facebook session

我正在尝试在 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 访问的操作时,如下所示。 Image from facebook, facebook Authentication dialog .如果用户按下 Allow 按钮,那么一个 Token 将被插入到他们的数据库中,其中包含 user Idyour App Id验证时间(可能是无限的)以及您可能执行的操作(例如访问信息、发送电子邮件、访问帖子、张贴到墙上等.),该特定的 Token 将返回给您,您保存该 Token 以访问该 token 允许的信息和其他操作。 每当您请求与该 token 匹配的任何操作时,检查验证,然后查看用户是否允许该操作,如果允许,您将被授权完成该操作。

关于android facebook 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6690344/

相关文章:

android - 如何在我的应用程序中实现 AccountManager

android - 如何缩放 View 并将其保存到 SDCard

java - Facebook java API : what is the replacement for all the feed_* methods?

facebook - Omniauth - 将 facebook 连接显示为弹出窗口

php - 此页面未正确重定向

android - 购买消耗品的应用内结算问题

android - 无法导入 google-play-services_lib,因为项目名称正在使用中

facebook - Facebook 评论页面中的 publish_actions 在哪里?

php - 创建购物车时遇到问题 [PHP 和 XML]

node.js - 查询 MongoDB 嵌套字段