Перенаправление на пользовательский URL-адрес после установки приложения Shopify

Я начинаю разработку приложения Shopify. Я разрабатываю встроенное приложение Shopify, которое будет установлено в магазинах Shopfify. После его установки я хочу иметь отдельные веб-страницы для администратора магазина Shopify и администратора встроенного приложения Shopify, где они могут видеть статистику и выполнять некоторые действия. (Я понятия не имею, следует ли мне хранить эти страницы в домене магазина shopify или во внешнем размещенном домене, есть какие-нибудь советы по поводу того, какой из них подходит для этого варианта использования?)

Я создаю его на Ruby в Rails с помощью shopify_app и shopify_api драгоценных камней. Проблема, с которой я сталкиваюсь, заключается в том, что после установки приложения в магазин Shopify по умолчанию оно должно быть перенаправлено на /auth/shopify/callback, который обрабатывается механизмом shopify_app, и он перенаправляет установщик приложения (владелец магазина / продавец магазина) в магазин домен (см. этот код здесь ).

module ShopifyApp
  # Performs login after OAuth completes
  class CallbackController < ActionController::Base
    include ShopifyApp::LoginProtection

    def callback
      return respond_with_error if invalid_request?

      store_access_token_and_build_session

      if start_user_token_flow?
        return respond_with_user_token_flow
      end

      perform_post_authenticate_jobs

      respond_successfully
    end

    private

    def respond_successfully
      if jwt_request?
        head(:ok)
      else
        redirect_to(return_address)
      end
    end
  end
end

и определение return_address

def return_address
  return base_return_address unless ShopifyApp.configuration.allow_jwt_authentication
  return_address_with_params(shop: current_shopify_domain)
rescue ShopifyDomainNotFound
  base_return_address
end

Что я хочу сделать, так это то, что после установки приложения (предоставлено разрешение oauth) я хочу перенаправить на настраиваемый URL-адрес (желательно на какой-то внешний веб-сайт, который я буду размещать для администратора магазина Shopify и администратора приложения Shopiy), как Возможно?

По сути, я пытаюсь перейти на настраиваемый URL-адрес вместо return_address_with_params(shop: current_shopify_domain). И есть ли какие-либо указатели на то, как обрабатывать аутентификацию после того, как мы перенаправлены на этот внешний URL-адрес?

Я только начал с разработки приложений Shopify, и поэтому у меня проблемы с пониманием этих потоков. Любая помощь приветствуется.
Спасибо


person Prime    schedule 08.01.2021    source источник


Ответы (1)


если вы выберете Embedded APP во время настройки APP, то нет возможности обрабатывать APP обоими способами, как в бэкэнде Embed iframe и отдельном доменном приложении.

Вы выбираете одно из них, но не оба. введите описание изображения здесь

person Onkar    schedule 08.01.2021
comment
спасибо, что указали на это. Есть ли альтернатива встроенному приложению, которое позволит мне размещать мои страницы во внешнем домене? После установки приложения в магазин Shopify? - person Prime; 08.01.2021
comment
да, вы можете использовать собственную систему входа в систему, такую ​​как ваш собственный сеанс и база данных, чтобы обрабатывать то же самое, и связать кнопку внутри с внутренним приложением Iframe, как только кто-то щелкнет по кнопке, вы не сможете открыть данные магазина в новом домене с магазином данные. но я не на 100%, насколько Shopify поддерживает то же самое и разрешает в приложении - person Onkar; 08.01.2021
comment
Благодарю. Есть ли что-то вроде невстроенного приложения, предлагаемого Shopify. Я видел приложения, которые не встраиваются после установки в магазин. Вместо этого откройте новую вкладку. - person Prime; 11.01.2021
comment
Да, если вы не хотите использовать функцию встраивания, просто отключите ее в настройках приложения, и она не будет перенаправлять вас на серверную часть после установки. - person Onkar; 11.01.2021
comment
это сделало это. Не знал об этой настройке. Мне нужно разъяснение по этому поводу; Насколько я понимаю, после того, как приложение установлено для хранения, браузер получает файл cookie, который используется для аутентификации всех последующих вызовов приложения shopify? Я прав? - person Prime; 11.01.2021
comment
Конечно, как только вы настроите приложение для партнерской учетной записи, появится возможность загрузить приложение как встроенное в бэкэнд shopify. Если вы хотите загрузить или перенаправить его на собственный домен третьей части, вам необходимо отменить выбор этой опции. - person Onkar; 11.01.2021
comment
да, эта часть мне понятна. Я спрашиваю, что после перенаправления на этот внешний домен я должен установить cookie в браузере и сохранить там данные сеанса, а затем использовать данные cookie для отправки аутентифицированных запросов в серверную часть моего приложения? - person Prime; 11.01.2021
comment
Да, вы можете хранить данные в файлах cookie и сеансах, а также выполнять вызовы API для определения конечных точек API. - person Onkar; 11.01.2021