Система Бронирования Google Calendar



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



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



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



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



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



По какой-то причине я не получаю '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 API v3

533   1  

1 ответ:

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

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

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

Comments

    Ничего не найдено.