Я использую Rails + Garb Gem (Sija Branch) + omniauth-google-oauth2 Gem, и я могу успешно пройти аутентификацию с помощью Google Analytics API и извлечь данные, которые наше приложение генерирует при использовании входа пользователя, например:
Garb::Session.login('USERNAME', '<PASSWORD>')
Затем я могу использовать Garb для подключения к нужному мне профилю Google Analytics, извлекать из него данные и отображать диаграммы на веб-странице. Все работает нормально.
Однако я хочу использовать oAuth2 для аутентификации с помощью Analytics, поэтому мне пришлось установить ветвь Sija для Garb Gem из Github (он поддерживает oAuth2), а также я установил omniauth-google-oauth2 Gem. Теоретически я должен иметь возможность аутентифицироваться, используя следующий код:
Garb::Session.access_token = access_token # an instance of OAuth2::Client
Сейчас для меня это становится немного туманным, и я был бы очень признателен за некоторые советы. Вот как далеко я зашел:
1) Я создал проект в консоли Google API и включил Analytics API в разделе Services.
2) Это предоставило мне идентификатор клиента и секрет клиента.
3) Я наткнулся на этот код, который я мог заполнить указанным выше идентификатором и секретом:
client = OAuth2::Client.new(
GOOGLE_CLIENT_ID,
GOOGLE_CLIENT_SECRET,
{
:site => 'https://accounts.google.com',
:authorize_url => '/o/oauth2/auth',
:token_url => '/o/oauth2/token'
})
4) Затем идет следующий фрагмент кода:
response = OAuth2::AccessToken.new(
client,
STORED_TOKEN, {
refresh_token: STORED_REFRESH_TOKEN,
expires_at: STORED_EXPIRES_AT
})
5), а затем теоретически подключиться к:
Garb::Session.access_token = response
У меня проблема в том, что у меня нет информации о токене в пункте (4) выше. Мне кажется, что с oAuth2 мне нужно один раз сделать «рукопожатие» и распечатать значения токенов возврата? Возможно, через код Rails, который распечатывает возвращенные значения, а затем вставляет значения токенов в константу в приложении Rails, чтобы я мог использовать их в приведенном выше коде? Я действительно сбит с толку. Как я упоминал ранее, веб-приложение отлично работает с аутентификацией пользователя при входе в систему. Все, что делает веб-приложение, - это аутентификация с помощью аналитики, выборка некоторых данных и рисование диаграммы. Но я застрял в преобразовании его в oAuth2, поскольку я просто не знаю, как получить токен доступа, который ищет Garb Gem. Я также должен отметить, что это Это не общедоступный веб-сайт с аутентификацией нескольких пользователей, это веб-сайт CMS, который подключается к нашим собственным данным Analytics.
Я видел некоторые частичные фрагменты аспектов этого, но не полностью объясненный или рабочий пример. Я был бы очень признателен за любые рекомендации и помощь с этим вопросом.
Спасибо заранее,
JR