Интеграция Xero с Rails / Devise Omniauthable - PullRequest
0 голосов
/ 07 июня 2019

Я хочу использовать omniuthable devise для аутентификации учетных данных моего пользователя, чтобы использовать API Xero. Но когда я пытаюсь авторизоваться с помощью этого самоцвета, я получаю 400 Bad Request, Oauth :: Unauthorized. Я зарегистрировал приложение на сайте Xero и сгенерировал ключи API (CONSUMER_KEY и CONSUMER_SECRET).

Вот соответствующие маршруты:

 scope module: :user do
        devise_for :accounting_credentials,
                   path: :accounting,
                   controllers: {
                     omniauth_callbacks: 'application/users/accounting_credentials/omniauth_callbacks'
                   }
    end

Мой контроллер

class Application::Users::AccountingCredentials::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def xero
    ...
  end

Разработать инициализатор config.omniauth :xero, ENV['CONSUMER_KEY'], ENV['CONSUMER_SECRET']

и модель

class AccountingCredential < ActiveRecord::Base
  devise :omniauthable, omniauth_providers: %i[xero]
  ...
end

У меня есть мой отладчик в начале Application :: Users :: AccountingCredentials # xero, чтобы увидеть поступающую информацию. Но я даже не могу туда попасть, так как сначала получаю вышеуказанную ошибку. У меня никогда не было проблем с пользователями Devise и Omniauth. Я мог бы сделать свой собственный клиент для авторизации с помощью Xero, но подумал, что это будет более простой и быстрый способ.

1 Ответ

0 голосов
/ 07 июня 2019

Это всегда происходит.После нескольких часов поиска я отправляю вопрос, продолжаю искать ответы, а затем нахожу нужный мне ответ.Xero требует домен обратного вызова, который они требуют необязательно.Это не.Мне пришлось использовать ngrok, чтобы разрешить https, который требует Xero.и затем используйте этот URL для URL приложения, а затем домен в обратном вызове.В моем случае это был https://[number].ngrok.io и домен обратного вызова: [number].ngrok.io

...