Arhn - архитектура программирования

Авторизация моего приложения Google API путем прохождения потока OAuth2 только один раз

Я работаю над приложением для добавления задач в некоторые учетные записи, используя «API задач Google» для java, используя Oauth 2.0.

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

интересно, есть ли другой способ авторизовать java-приложение без его выполнения и избежать функции обратного вызова:

возможно, отправив ссылку владельцу учетной записи Gmail, отправив электронное письмо и т. д.

поэтому все, что я хочу сделать, это:

  1. я хочу, чтобы пользователь приложения авторизовал его извне, не выполняя его
  2. когда я выполняю его, чтобы добавить задачу, я просто хочу проверить, авторизован ли он от пользователя, я добавляю задачу, если нет, я пропускаю ее другому пользователю и т. д.

спасибо


Ответы:


1

Типичный поток OAuth 2.0 выглядит следующим образом:

  1. Отправьте запрос на доступ к данным пользователя в определенной области (https://www.googleapis.com/auth/tasks)
  2. Пользователь получает экран аутентификации, где он должен войти в систему и разрешить вашему приложению «Управлять вашими задачами».
  3. Ваше приложение получает код авторизации
  4. Ваше приложение должно заменить код авторизации на токен доступа и токен обновления.

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

Весь процесс можно увидеть здесь, на площадке OAuth2.0.

Если вы правильно следуете процессу и сохраняете два маркера (в базе данных или файле, в зависимости от платформы), пользователь должен увидеть этот экран только один раз.

Теперь самое интересное: клиентская библиотека Java API Google сделает все это за вас. Точный класс для использования меняется в зависимости от того, какую версию библиотеки вы используете, но вы должны указать место для сохранения токенов при создании объекта службы. Например, с API календаря:

// For this example we're saving the credentials in a file on the system,
//  rather than a database.
FileCredentialStore credentialStore = new FileCredentialStore(
    new File(System.getProperty("user.home"), ".credentials/calendar.json"), JSON_FACTORY);

// set up authorization code flow
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
    HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, Collections.singleton(CalendarScopes.CALENDAR))
    .setCredentialStore(credentialStore)  // This will store the tokens for you
    .build();

Вы можете проверить это в calendar-cmdline-sample здесь. Есть много других примеров, чтобы увидеть процесс авторизации в App Engine или Android.

22.07.2013
  • спасибо за ответ :) .. у меня есть вопрос .. что означает user.home в коде? 23.07.2013
  • System.getProperty("user.home") ссылается на то, что система идентифицирует как домашний каталог пользователя. На машинах Unix это часто представляется как ~. Эта строка создает путь к файлу, в котором сохранены учетные данные. Так что на машине unix это может быть ~/.credentials/calendar.json 23.07.2013
  • эй, ник, мне было интересно, не могли бы вы помочь мне с этой проблемой здесь ссылка я действительно понятия не имею, что не так с моим исходным кодом 25.07.2013
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..