Intuit OpenID Connect, код авторизации, возвращаемый сервером, не работает - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь реализовать OpenId Connect для QuickBooks, так как они устарели в 2019 году OAuth1.

В документации здесь я сначала должен подготовить запрос авторизации для перенаправления пользователя на сервер Intuit OAUth 2.0.

Для обработки всего процесса я использую гем omniauth стратегии omniauth-quickbooks-oauth2 . Вот настройка omniauth:

Rails.application.config.middleware.use OmniAuth::Builder do
  # Open ID Connect
  provider(
    :quickbooks_oauth2,
    ENV['INTUIT_CLIENT_ID'],
    ENV['INTUIT_CLIENT_SECRET'],
    scope: 'com.intuit.quickbooks.accounting openid profile email phone address',
    sandbox: Rails.env.development?,
  )
end

Генерирует следующий запрос:

https://appcenter.intuit.com/connect/oauth2?client_id=MYCLIENTID&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Fquickbooks_oauth2%2Fcallback&response_type=code&scope=com.intuit.quickbooks.accounting+openid+profile+email+phone+address&state=71f636c1097f8d5bf07a66df5ca64ec43800ea90f6bcedca

Как только пользователь предоставляет доступ, перенаправляет Intuit на мой URL перенаправления, и после аутентификации пользователя я получаю код авторизации из параметров для запроса токенов.

Для этого я использую самоцвет oauth2

oauth_params = {
      :site => "https://appcenter.intuit.com/connect/oauth2",
      :authorize_url => "https://appcenter.intuit.com/connect/oauth2",
      :token_url => "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer"
    }
client = OAuth2::Client.new(ENV['INTUIT_CLIENT_ID'], ENV['INTUIT_CLIENT_SECRET'], oauth_params)

client.auth_code.get_token(authorization_code,
                                :redirect_uri => 'http://localhost:3000/auth/quickbooks_oauth2/callback',
                                :grant_type => "authorization_code")

Затем я получаю сообщение об ошибке:

OAuth2::Error: invalid_grant:
{"error":"invalid_grant"}

Я проверил мои обратные вызовы на портале для разработчиков Intuit:

http://localhost:3000/auth/quickbooks_oauth2/callback

Когда я пытаюсь получить код для получения токенов из кода авторизации, полученного на Intuit OAUth2 Playground, это работает! Это заставляет меня поверить, что проблема может быть в реализации Omniauth, но я застрял!

...