Система бронирования Календаря Google - PullRequest
2 голосов
/ 27 марта 2012

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

Я пишу программу, которая загружает данные из моих клиентов в Календарь Google.OAuth2 'access_token' для этого календаря хранится в базе данных и передается всякий раз, когда мне нужно получить к нему доступ.Таким образом, он всегда получает доступ к одному и тому же Календару, принадлежащему моему клиенту.

Мой клиент затем обновляет этот Календарь Google, и с помощью API Календаря Google и немного AJAX я рисую его данные о занятости.и обновить плоскую HTML-страницу для пользователя.

Таким образом, он действует как система бронирования.Пользователь может манипулировать HTML-страницей, и дни, которые он выбирает, затем обновляются в моих клиентах в Календаре Google через API Календаря Google.

Вот проблема.

По какой-то причине я не получаю 'refresh_token' и через час мой 'access_token' устарел, и я не могу получить доступ к данным календаря.

Это значения, которые яотправляю для моего «кода» ( не беспокойтесь о форматировании, это просто, чтобы показать вам ):

    'redirect_uri' : 'http://local.test.com',
    'client_id' : 'blahblah.apps.googleusercontent.com',
    'scope' : 'https://www.googleapis.com/auth/calendar',
    'access_type' : 'offline',
    'response_type' : 'code'

Как только я получу свой «код», я тогдасделать второй запрос для моего 'access_token' :

          'code': $code,
          'grant_type': 'authorization_code' ,
          'redirect_uri' : 'http://local.test.com',
          'client_id' : 'blahblah.apps.googleusercontent.com',
          'client_secret' : 'secret_code'

Так что я получаю все, что мне нужно, только не 'refresh_token' .

Кто-нибудь может указать, где я иду не так здесь?Может кто-нибудь предложить, возможно, лучшее решение на основе моего случая, или даже если я пытаюсь невозможного?

Любая помощь будет принята с благодарностью

Я использую Google Calendar APIv3

1 Ответ

2 голосов
/ 28 марта 2012

Для всех, кто сталкивается с этим постом.

Вышеуказанные шаги для получения 'access_token' и 'refresh_token' являются правильными.Однако Google изменил способ выдачи токенов OAuth2.

Ваш первый запрос предоставит вам 'refresh_token' , после чего вы не получите другой.Поэтому, если вы потеряете его, вам придется настроить совершенно новые секреты клиента и т. Д. В консоли API Google.

...