Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Как достать expires_in при авторизации через Facebook - Android

01.08.2013, 05:52. Просмотров 709. Ответов 7
Метки нет (Все метки)

При авторизации через Фейсбук он в лог выводит

XML
1
FacebookSDK.WebDialog      Redirect URL: fbconnect://success#access_token=CAAGf4yZCCK1gBAKtDOt1kQ2PZAP2OrMiBvnzzHuDPHmOf6v61WUZCGFyGzZBd9uT42H&expires_in=1171111
токен я так могу получить
Java
1
Log.i(TAG, "Access Token :)=" + session.getAccessToken());
время жизни expires так
Java
1
Log.i(TAG, "Expiration Date :)=" + session.getExpirationDate());
а вот сам expires_in - достать не знаю как, пересмотрел уже все методы. Скажите как его достать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
01.08.2013, 11:58     Как достать expires_in при авторизации через Facebook #2
Что пишет session.getExpirationDate()? Если я правильно прочёл исходники, expires_in и ExpirationDate - идентичны, за исключением формата представления, expires_in - Long (и используется только для хранения в Bundle), ExpirationDate - Date (используется для вычислений/представления).
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
01.08.2013, 18:10  [ТС]     Как достать expires_in при авторизации через Facebook #3
Цитата Сообщение от Wenceslaus Посмотреть сообщение
session.getExpirationDate()
выдает дату (в виде даты) до какого числа будет жить expires.

Цитата Сообщение от Wenceslaus Посмотреть сообщение
expires_in
выдает число вида 111111 и да вроде это long.
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
01.08.2013, 18:32     Как достать expires_in при авторизации через Facebook #4
Цитата Сообщение от Stylish2013 Посмотреть сообщение
выдает дату (в виде даты) до какого числа будет жить expires.
Какую конкретно дату выдаёт? Что в логе пишет?
Ибо я подозреваю, что:
Java
1
expires_in == session.getExpirationDate().getTime();
Просто сравните их..
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
04.08.2013, 17:35  [ТС]     Как достать expires_in при авторизации через Facebook #5
Цитата Сообщение от Wenceslaus Посмотреть сообщение
session.getExpirationDate().getTime();
возвращает -9223372036854775808

Цитата Сообщение от Wenceslaus Посмотреть сообщение
expires_in
а вот expires_in выглядит 5181412
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
05.08.2013, 11:27     Как достать expires_in при авторизации через Facebook #6
Тогда без вариантов: expires_in временная переменная, используемая SDK в момент авторизации. Не думаю, что её можно как-то получить..
Если есть время/возможности, можете просмотреть в debugger'е её жизненный цикл и поставить точку в этом вопросе. Есть люди, которым это будет интересно..
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
05.08.2013, 20:29  [ТС]     Как достать expires_in при авторизации через Facebook #7
Цитата Сообщение от Wenceslaus Посмотреть сообщение
Если есть время/возможности, можете просмотреть в debugger'е её жизненный цикл
а что вы имеете ввиду? сколько она времени живет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2013, 11:29     Как достать expires_in при авторизации через Facebook
Еще ссылки по теме:

Как работать с API VK / Facebook? Android
Как открыть url для авторизации в браузере и после вернуть токен в приложение? Android
Android Нужен совет по правильной логике для авторизации пользователя при запуске приложения
Как достать исходный код из APK? Android
Как достать из телефонной книги адреса чатов, адреса проживания и сайты Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
06.08.2013, 11:29     Как достать expires_in при авторизации через Facebook #8
Stylish2013, и это тоже. Но я имел ввиду весь спектр её существования: где создаётся, при каких условиях, где изменяется, где хранится, где выводится в log и пр. Если это всё проанализировать, то можно найти способы её получить или воссоздать.
К примеру, в log её выводит класс DialogWebViewClient:
Java
1
2
3
4
5
6
        private class DialogWebViewClient extends WebViewClient {
        @Override
        @SuppressWarnings("deprecation")
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Utility.logd(LOG_TAG, "Redirect URL: " + url);
            //...
как видим, сюда её устанавливает в формате ссылки класс WebDialog:
Java
1
2
3
4
5
6
7
8
    public class WebDialog extends Dialog {
    //...
    @SuppressLint("SetJavaScriptEnabled")
    private void setUpWebView(int margin) {
        //...
        webView.setWebViewClient(new DialogWebViewClient());
        //...
        webView.loadUrl(url);
в этот класс она попадает во время его создания:
Java
1
2
3
4
    public WebDialog(Context context, String url, int theme) {
        super(context, theme);
        this.url = url;
    }
далее ищем, кто вызывает этот конструктор, там же ищем и стоку создания этой expires_in. Когда всё найдено, ставим точки прерывания, запускаем приложение в режиме отладки и наблюдаем за развитием переменной.

P.S. Она того стоит? Хотя нет, спрошу по другому: зачем expires_in вам понадобилась?
Yandex
Объявления
06.08.2013, 11:29     Как достать expires_in при авторизации через Facebook
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru