Как получить андроид токен

Получить токен id в приложении Android и проверить его на сервере backend (как использовать токен?)

Я разрабатываю приложение для Android, которое потребляет данные с моего собственного сервера REST API. Я хочу использовать Firebase-аутентификацию, потому что она позволяет пользователю войти в систему с помощью Google, Facebook, Twitter … очень простым способом.

Но я не уверен, как использовать маркеры ID:

  • Поскольку идентификаторы токенов имеют дату истечения срока действия, следует ли мне вызвать метод getToken для каждого запроса в клиентском приложении, поэтому я уверен, что каждый раз отправляю действительный токен?
  • Должен ли я вызвать verifyIdToken на сервере каждый раз, когда я получаю запрос от клиентского приложения?

Я не знаю, что делают эти методы (getToken и verifyIdToken) под капотом, и потому что они асинхронны, я боюсь, что они делают запрос на серверы Firebase при каждом вызове. Поэтому я думаю, что сделать 2 запроса серверам Firebase в каждом из моих запросов – это не путь …

И getToken (), и VerifyIdToken () предназначены для вызова для каждого исходящего / входящего запроса.

1) Хотя getToken () является асинхронным, Firebase Android SDK фактически кэширует текущий токен Firebase в локальном хранилище. Пока кешированный токен остается в силе (т. Е. В течение одного часа с момента выпуска), getToken () немедленно возвращает маркер. Только после истечения срока действия кэшированного токена SDK извлекает новый токен с удаленного сервера Firebase.

2) VerifyIdToken () также оптимизирован для производительности. Он кэширует публичный сертификат токена Firebase (действительный в течение 6 часов), который используется для проверки подписи маркера на локальной машине. Нет RPC, кроме загрузки публичного сертификата.

Вы обновляете токен каждый раз, когда он недействителен. И да, вы должны проверять токен на серверной стороне каждый раз. Если значение недействительно, вы отправляете код ошибки 401 с сообщением об ошибке (если хотите). Проверка токена используется при обновлении токена, а токен добавляется к каждому запросу. Если вы используете OkHttp, вы можете создать перехватчик, который добавляет токен в заголовке для каждого запроса, а также может обновлять токен, когда код ошибки равен 401.

Из того, что вы объяснили в этом вопросе, я предполагаю, что вы говорите о доступе к ресурсам кросс-клиента с помощью входа в Google. И, в частности, вы, похоже, заинтересованы в получении идентификатора идентификатора один раз и используете его, не получая при каждом последующем вызове API.

Это более или менее является синонимом механизма автономного доступа. В автономном доступе клиентское приложение Android запрашивает авторизацию пользователя для запрашиваемых областей. После авторизации вместо выдачи токена доступа сервер auth возвращает короткий код авторизации, который может использоваться для создания токена доступа и обновления токена.

Читайте также:  Андроид для планшета x86

Затем клиент может передать код авторизации на бэкэнд через безопасное соединение. Сервер backend может извлекать токен автора и обновлять токен и хранить их в безопасном месте. Маркер доступа недолговечен и может быть использован для быстрого доступа к облачным ресурсам и обновляется время от времени с помощью токена обновления. Ток обновления не истекает, но может быть отменен. При аннулировании серверное приложение должно попросить клиентское приложение повторно выбрать код автора.

Перейдите по этой ссылке, в которой подробно описывается полная инфраструктура, а также шаги, которые должны выполняться как клиентским, так и серверным приложением – https://developers.google.com/identity/protocols/CrossClientAuth

Теперь, придя к вашему вопросу, вы должны использовать несколько иной API для получения кода auth. Ознакомьтесь с этим API – https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInOptions.Builder.html#requestServerAuthCode(java.lang.String)

Пример кода: https://developers.google.com/identity/sign-in/android/offline-access

POST https: // YOUR_AUTH0_DOMAIN / делеция Content-Type: ‘application / json’

Используйте нижеприведенный код в своем классе приложения, а regId – это значение для вашего токена устройства.

Источник

Как получить access_token Вконтакте

[статья обновлена 1 декабря 2020]

В последнее время появляется огромное количество онлайн-сервисов, компьютерных или мобильных приложений, скриптов, которые предназначены для ВКонтакте, но для их работы необходимо пройти авторизацию через access_token.

Некоторые сервисы предоставляют возможности получить ключ доступа, который необходим для авторизации. На это уходит несколько секунд. Но как быть, если вы загрузили скрипт, но необходимого access_token ключа нет?

Краткая инструкция для получения токена сообщества

Заходим в настройки сообщества. (если у вас нет сообщества, значит его необходимо создать):

1. Работа с Api > 2. Получить ключ > 3. Скопируйте его (это ключ (токен) и есть access_token сообщества)

Вот и всё. А если же вам нужен токен пользователя, тогда вся необходимая информация находится ниже в статье.

Получить токен через приложение:

Где взять access_token?

Сегодня мы разберем то, как авторизоваться в ВКонтакте, используя прямую ссылку API ВКонтакте (на базе протокола OAuth) или, как его еще называют, Implicit flow. Авторизация, если вы используете этот метод, производится через приложение Вк, которое указывается как ID. Сегодня такой метод считается самым безопасным. Вы можете натолкнуться на статьи, в которых рассказывается о методах получения access_token с использованием приложений, которые вызывают (и не зря!) подозрение. Но сегодня мы поговорим о том, как авторизоваться через официальные приложения ВКонтакте.

Секрет получения токена – в переходе по ссылке, в которой содержится ID определенного приложения ВКонтакте.

Ссылка может быть следующего вида:

https://oauth.vk.com/authorize?client_id=ID_ПРИЛОЖЕНИЯ&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token

Если с этим разобрались, закономерно всплывает следующий вопрос: где взять эту самую ссылку?

Далее я расскажу о двух основных методах, которые позволят получить токен:

✅ Получение токена через собственное приложение.

  • С использованием собственного приложения. Этот метод заведомо рассчитан на то, что у вас есть приложение собственной разработки. Если у вас его нет – самое время создать. Сделать это очень легко: достаточно перейти по ссылке vk.com/apps?act=manage и кликнуть на «Создать приложение».
Читайте также:  Пошаговая инструкция перепрошивки андроида через компьютер

Система попросит ввести название для приложения. Как пример, можете использовать «Получение access_token». Проверьте, если ли галочка «Standalone-приложение». Далее нажимайте на «Подключить приложение».

Чтобы подтвердить приложение, надо будет ввести код, который вам придет на указанный номер телефона. На этом этапе создания приложения можно зафиксировать мобильное устройство к странице Вк. Чтобы это сделать, надо кликнуть на «Привязать устройство». Можно и без привязки к аккаунту. Тогда просто необходимо перейти по ссылке «Подтвердить через SMS».

После того, как вы подтвердите регистрацию, откроется страница, на которой изложена информация о приложении, которое было создано. Нажмите на «Настройки», которые расположены в левом углу. Там расположен client_id – ID приложения ВКонтакте.

ID необходимо скопировать. Далее – вставьте в ссылку, заменив ID_ПРИЛОЖЕНИЯ. Получится как-то так:

https://oauth.vk.com/authorize?client_id=5563738&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token

5563738 – это ID приложения, которое вы создали. У вас получится похожая комбинация. После того как создали приложение перейдем к самому вопросу как получить access_token.

Получение токена через официальное приложение VK.

Метод отличается от того, который был описан ранее, лишь тем, что вам не нужно создавать собственное приложение. Используйте уже созданное. Ему можно стопроцентно доверять.

Метод будет рассматривать на примере ВКонтакте для Android. ID такой: 2890984. Именно эту комбинацию надо подставить в ссылку.

https://oauth.vk.com/authorize?client_id=2890984&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token

На этом заканчивается часть статьи, в которой мы рассмотрели варианты идентификации приложения, которые могут быть использованы для авторизации. Осталось коснуться всего лишь нескольких моментов:

✅ Права доступа:

  • В примерах, которые описаны выше, параметр scope содержит многие названия разделов социальной сети ВКонтакте: audio, photos, notify, friends. Это те разделы, которые будут открыты для приложения. Аccess_token может быть использован по-разному. ID, который вы используете, принадлежит доверенному приложению. Именно поэтому вы можете создать access_token, у которого есть все права доступа. Он становится универсальным, так что может быть использован везде.

✅ access_token:

Последний вопрос, которого надо коснуться, так это то, как получить непосредственно сам ключ access_token. После того, как вы получите ссылку (использовав один из методов), надо будет перейти по ней, чтобы открыть право доступа.

Уже после этого в вашей адресной строке появится необходимый ключ. Он копируется вручную: после access_token= и перед &expires_in.

Ну и закончить стоит несколькими советами:

  • Не передавайте ключ access_token посторонним лицам.
  • Не стоит проходить авторизацию с использованием приложений, которые не вызывают доверия. Рекомендуется использовать только собственные или официальные.
  • Удалите ключ после того, как вы его использовали. Если понадобится, вы всегда сможете создать новый.
  • Все активные сеансы стоит завершить после того, как в них исчезнет необходимость. Это вы можете сделать через настройки безопасности аккаунта.

Источник

Простая реализация Token для взаимодействия мобильного приложения с WebAPI

С недавнего времени занялся разработкой мобильных приложений с помощью Xamarin.Forms в связи с производственной так сказать необходимостью. Не буду конечно рассказывать про танцы с бубнами чтобы написать и запустить на эмуляторе приложение «Hello, World!», но главное разработка пошла достаточно плавно.

Читайте также:  Программная перезагрузка андроид без root

Благо и понимание задачи было — а именно — взаимодействие мобильного приложения с базой данных внутренней CRM системы в компании, добавить сотрудникам мобильности, но при этом не забывать и о безопасности. Было принято решение создать WebAPI, ибо чтобы работать с уже привычными ASMX веб-сервисами в Xamarin нужно плясать с бубнами.

Как сказал выше, в том числе хотелось сделать «связующее звено» достаточно безопасным, а значит мобильное приложение должно иметь авторизацию (до кучи и удобства с возможностью сохранения авторизации и автоматического входа.

Не хотелось глубоко копаться в реализации WebAPI с авторизацией на уровне Token, а хотелось сделать что-то попроще, тем более пока «гуглил» видел что такого желания у людей с избытком, но все отсылы отвечающих были либо к стандартным механизмам, либо использования каких-нибудь пакетов из NuGet, чего хотелось бы по максимуму избежать.

В базе собственной CRM и так уже есть вся информация для авторизации и городить что-то лишнее тупо не хотелось.

В итоге, после долгих мытарств, поисков и т.п. — думаю у меня получилось достаточно неплохое решение, которым мне и хочется поделится с сообществом.

Итак, что мы имеем:

Авторизация и получение Token

Не буду опять-таки вдаваться в подробности создания WebAPI, приведу пример кода функции авторизации.

Объяснять что делает функция думаю тоже нет смысла, но как результат при вызове API мобильное приложение получает информацию что юзер валиден и выдаёт сгенерированный Token (я решил не мелочится и заложил генерацию 1000-символьной строки из большого количества символов всей английской и русской клавиатуры, с заглавными и строчными буквами, цифр и простых символов.

Этот «псевдо»-Token я прописываю в приложения.

Кстати стоит, как мне кажется, отдельно отметить 3 потраченных дня, откаты версий и т.п. чтобы разобраться с этим самым App.Current.Properties.

Произошла ситуация, что в какой-то момент при перезапуске приложения на эмуляторе содержимое App.Current.Properties отсутствовало. Долго мучился и пытался понять почему всё пропадает.

Оказывается пока приложение активно в App.Current.Properties могут хранится любые объекты, в том числе и объекты с данными собственных классов, но при «убиении» процесса если там было что-то отличное от «простых» объектов — содержимое App.Current.Properties отчищается, но если там хранить только простые объекты — string, bool, int и т.п. то всё останется сохраненным!

Продолжим. Все последующие обращения к API я снабжаю дополнительным заголовком:

Что по сути к заголовкам запроса добавляет хидер. Теперь все остальные контроллеры WebAPI перед тем как что-либо «выдать» клиенту проверяют наличие и соответствие псевдо-Token.

Как мне кажется полученная реализация псевдо-токена имеет право на существование и кому-то может помочь в реализациях. Надеюсь, сообщество палками меня не закидает, это мой первый пост, надеюсь что будет не только критика.

Источник

Оцените статью