Skip to content

My app keeps redirecting to login #2011

@sshaw

Description

@sshaw

v22.5.2

There's heading in the Troubleshooting doc for this but no content! https://github.com/Shopify/shopify_app/blob/main/docs/Troubleshooting.md

Logging shows this as the issue:

Filter chain halted as :login_on_scope_changes rendered or redirected

Yet from the console ShopifyApp.configuration.shop_access_scopes_strategy.update_access_scopes? returns false.

Cookes are set after logging in but, if the host and shop query string parameters are not set, one is redirected to login.

Config:

ShopifyApp.configure do |config|
  config.application_name = "Total Headache"
  config.old_secret = ""
  config.scope = "read_products"
  # read_all_orders need shopify approval before we can use
  config.scope = '...'
  config.embedded_app = false
  config.new_embedded_auth_strategy = false

  config.after_authenticate_job = false
  config.api_version = "2025-07"
  config.shop_session_repository = "Shop"
  config.log_level = :debug
  config.reauth_on_access_scope_changes = true
  config.webhooks = []

  config.api_key = ENV.fetch('SHOPIFY_API_KEY', '').presence
  config.secret = ENV.fetch('SHOPIFY_API_SECRET', '').presence

  # You may want to charge merchants for using your app. Setting the billing configuration will cause the Authenticated
  # controller concern to check that the session is for a merchant that has an active one-time payment or subscription.
  # If no payment is found, it starts off the process and sends the merchant to a confirmation URL so that they can
  # approve the purchase.
  #
  # Learn more about billing in our documentation: https://shopify.dev/apps/billing
  # config.billing = ShopifyApp::BillingConfiguration.new(
  #   charge_name: "My app billing charge",
  #   amount: 5,
  #   interval: ShopifyApp::BillingConfiguration::INTERVAL_EVERY_30_DAYS,
  #   currency_code: "USD", # Only supports USD for now
  #   trial_days: 0,
  #   test: !ENV['SHOPIFY_TEST_CHARGES'].nil? ? ["true", "1"].include?(ENV['SHOPIFY_TEST_CHARGES']) : !Rails.env.production?
  # )

  if defined? Rails::Server
    raise('Missing SHOPIFY_API_KEY. See https://github.com/Shopify/shopify_app#requirements') unless config.api_key
    raise('Missing SHOPIFY_API_SECRET. See https://github.com/Shopify/shopify_app#requirements') unless config.secret
  end
end

Rails.application.config.after_initialize do
  if ShopifyApp.configuration.api_key.present? && ShopifyApp.configuration.secret.present?
    ShopifyAPI::Context.setup(
      api_key: ShopifyApp.configuration.api_key,
      api_secret_key: ShopifyApp.configuration.secret,
      api_version: ShopifyApp.configuration.api_version,
      host: ENV.fetch('HOST'),
      scope: ShopifyApp.configuration.scope,
      is_private: !ENV.fetch('SHOPIFY_APP_PRIVATE_SHOP', '').empty?,
      is_embedded: ShopifyApp.configuration.embedded_app,
      log_level: :debug,
      logger: Rails.logger,
      private_shop: ENV.fetch('SHOPIFY_APP_PRIVATE_SHOP', nil),
      user_agent_prefix: "ShopifyApp/#{ShopifyApp::VERSION}"
    )

    ShopifyApp::WebhooksManager.add_registrations
  end
end

And, controllers:

class AuthenticatedController < ApplicationController
  include ShopifyApp::EnsureHasSession
end

class TotalHeadachesController < AuthenticatedController
  include ShopifyApp::ShopAccessScopesVerification
end

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions