Я новичок в ROR, и моему приложению необходимо подключиться к стороннему API (ZohoCRM) с использованием Oauth2. Поэтому перед каждым вызовом мне нужно использовать токен (мне нужно обновить его, если он истек), но без использования devise gem. Я имею в виду, мне нужно подключиться к API в фоновом режиме (например, когда пользователь создан, проверьте, есть ли этот адрес электронной почты на ZohoCRM, если не создать новую учетную запись).
Документация Zoho: https://www.zoho.com/crm/help/developer/api/auth-request.html
и я использую:
Rails 4.2.11.1
ruby 2.5.1p57
Я пытался использовать драгоценность привратника https://github.com/doorkeeper-gem/doorkeeper
но это связано с пользователями и, похоже, не для моей версии рельсов
Doorkeeper currently supports Ruby on Rails >= 5.0
Я также проверил камень oauth2 https://github.com/oauth-xx/oauth2, но не могу понять, как правильно его использовать.
Как я уже говорил, я новичок в ROR и не понимаю, как правильно интегрировать этот камень oauth2 https://github.com/oauth-xx/oauth2. Я должен был бы, вероятно:
1 - некоторые маршруты и / или некоторые инициализаторы
2 - какой-то сервис для аутентификации
3 - некоторые модели для совершения звонков.
На странице oauth2 в разделе Примеры использования это так:
require 'oauth2'
client = OAuth2::Client.new('client_id', 'client_secret', :site => 'https://example.org')
client.auth_code.authorize_url(:redirect_uri => 'http://localhost:8080/oauth2/callback')
# => "https://example.org/oauth/authorization?response_type=code&client_id=client_id&redirect_uri=http://localhost:8080/oauth2/callback"
token = client.auth_code.get_token('authorization_code_value', :redirect_uri => 'http://localhost:8080/oauth2/callback', :headers => {'Authorization' => 'Basic some_password'})
response = token.get('/api/resource', :params => { 'query_foo' => 'bar' })
response.class.name
# => OAuth2::Response
но я не понимаю, куда я должен поместить этот код и как / где поместить кусочки, чтобы сделать его функциональным.
В конце концов, я хочу использовать его как
ZohoCrm::Contact.find(@user.crm_id)
или
ZohoCrm::Contact.update(
id: contactid,
email: new_email
)
Я посмотрел / нашел несколько примеров, но не смог найти ничего полезного.
Не могли бы вы помочь мне понять / понять, как это реализовать?
Большое спасибо !!!!
EDIT:
Нет идей?