Ruby Rails подключается к стороннему API, используя oauth2 без устройства - PullRequest
0 голосов
/ 23 апреля 2019

Я новичок в 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: Нет идей?

...