#ruby-on-rails #oauth-2.0 #shopify #shopify-app
Вопрос:
Работая в своей среде разработки с помощью ngrok, я получаю цикл перенаправления при попытке вернуться в приложение через несколько дней после установки в качестве тестового хранилища. Мое приложение не встроено.
Я захожу в магазин, приложения и нажимаю, чтобы открыть приложение. Он попадает в цикл перенаправления.
- /shopify/вход в систему
- /авторизация/shopify
- /shopify/dash
- /shopify/войти?return_to=/shopify/dash /авторизация/shopify
- /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
ДЕМОНСТРАЦИЯ
Я добавил демонстрационную версию, которая не работает.
Комментарии:
1.
/shopify/dash
что это?2. Это домашняя страница моего приложения shopify. удобная панель
3. @HymnZzy — я добавил несколько заметок.