Приложение Shopify попадает в петлю перенаправления

#ruby-on-rails #oauth-2.0 #shopify #shopify-app

Вопрос:

Работая в своей среде разработки с помощью ngrok, я получаю цикл перенаправления при попытке вернуться в приложение через несколько дней после установки в качестве тестового хранилища. Мое приложение не встроено.

Я захожу в магазин, приложения и нажимаю, чтобы открыть приложение. Он попадает в цикл перенаправления.

  1. /shopify/вход в систему
  2. /авторизация/shopify
  3. /shopify/dash
  4. /shopify/войти?return_to=/shopify/dash /авторизация/shopify
  5. /shopify/dash

и т.д.

У меня есть мой движок Shopify_App, добавленный вот так

 Routes:
mount ShopifyApp::Engine, at: '/shopify'
 

Инициализатор Shopify_app.rb:

 ShopifyApp.configure do |config|
  config.application_name = "PucttoShopifyApp"
  config.api_key = ENV['SHOPIFY_API_KEY']
  config.secret = ENV['SHOPIFY_API_SECRET']
  config.old_secret = ""
  config.scope = "read_products, write_themes, read_themes" 
  config.embedded_app = false 
  config.after_authenticate_job = false
  config.api_version = "2020-10"
  config.shop_session_repository = 'Shop'
  config.allow_jwt_authentication = true
  config.allow_cookie_authentication = false
  config.root_url = '/shopify'
  # config.after_authenticate_job = { job: "Shopify::AfterAuthenticateJob", inline: true }
end
 

А затем приложение запускается в пространстве имен shopify

 module Shopify
  class ApplicationController < AuthenticatedController
  end
end

class AuthenticatedController < ApplicationController   
  include ShopifyApp::Authenticated
end
 

С моей моделью магазина

 class Shop < ActiveRecord::Base
  include ShopifyApp::ShopSessionStorage

  def api_version
    ShopifyApp.configuration.api_version
  end
end
 

OmniAuth.rb

 Rails.application.config.middleware.use(OmniAuth::Builder) do
# frozen_string_literal: true
# TODO: needed?
provider :shopify,
  ShopifyApp.configuration.api_key,
  ShopifyApp.configuration.secret,
  scope: ShopifyApp.configuration.scope,
  callback_path: '/shopify/auth/shopify/callback',
  setup: lambda { |env|
    strategy = env['omniauth.strategy']

    shopify_auth_params = strategy.session['shopify.omniauth_params']amp;.with_indifferent_access
    shop = if shopify_auth_params.present?
      "https://#{shopify_auth_params[:shop]}"
    else
      ''
    end

    strategy.options[:client_options][:site] = shop
    strategy.options[:old_client_secret] = ShopifyApp.configuration.old_secret
    strategy.options[:per_user_permissions] = strategy.session[:user_tokens]
  }
end
 

В настройках моего приложения у меня есть
Разрешенные URL-адреса перенаправления
https://xxxx.ngrok.io/shopify/auth/shopify/callback

URL-АДРЕС приложения https://xxxx.ngrok.io/shopify/dash

Рельсы рельсы (6.1.3) shopify_app (18.0.1) Ruby 2.7.2

Глядя на список проблем, можно заметить, что есть и другие люди, испытывающие аналогичные проблемы. Как мне начать отладку, это ошибка Gem или что-то, что я неправильно настроил?

https://github.com/Shopify/shopify_app/issues/1281
https://github.com/Shopify/shopify_app/issues/1256
https://github.com/Shopify/shopify_app/issues/1053

Обновить. /тире переходит к

 class Shopify::DashController < Shopify::ApplicationController

  def dash
  end

end

module Shopify
  class ApplicationController < AuthenticatedController
    layout 'shopify'   
   end
end

class AuthenticatedController < ApplicationController
  include ShopifyApp::Authenticated
end
 

ДЕМОНСТРАЦИЯ

Я добавил демонстрационную версию, которая не работает.

https://github.com/asecondwill/shopifydemo3

Комментарии:

1. /shopify/dash что это?

2. Это домашняя страница моего приложения shopify. удобная панель

3. @HymnZzy — я добавил несколько заметок.