Android-приложение для Facebook - PullRequest
2 голосов
/ 14 июля 2011

Я пытаюсь создать на 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));

1 Ответ

2 голосов
/ 14 июля 2011

При доступе к любой facebook пользовательской информации или любому другому действию, требующему доступа к permission, как показано ниже. Image from facebook, facebook Authentication dialog. Если пользователь нажимает кнопку Allow, то в его базу данных вставляется Token с user Id, your App Id и validation time (которые могут быть неограниченными), а также с Actions, которые вы можете выполнить (e.g Access Info, Send Email, Access Posts, Post to Wall etc.), этот конкретный Token возвращается вам, и вы сохраняете этот Token для доступа к информации и другим действиям, разрешенным для этого токена. Всякий раз, когда вы делаете запрос на какое-либо действие, оно соответствует этому токену, проверяйте валидацию и затем проверяйте, разрешено ли это действие пользователем, если вам разрешено выполнить действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...