Я использую Ruby on Rails и подключаюсь к API-интерфейсу Shopify REST в моем приложении для получения информации о магазинах. Мы используем гем Shopify OAuth2, который обрабатывает области аутентификации и доступа для API, используя промежуточное ПО OmniAuth:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :shopify,
ENV["SHOPIFY_API_KEY"],
ENV["SHOPIFY_API_SECRET"],
scope: 'read_orders,read_products',
setup: lambda { |env|
strategy = env['omniauth.strategy']
shopify_auth_params = Rack::Utils.parse_query(env['QUERY_STRING'])
shop = if shopify_auth_params.present?
"https://#{shopify_auth_params['shop']}"
else
''
end
strategy.options[:client_options][:site] = shop
}
end
Я хочу изменить, какие области отправляются в Shopify во время аутентификации, поэтому некоторые магазины получают один набор областей, а другой - другой. Например, некоторые магазины будут запрашивать области:
read_orders, read_products
Пока другой магазин запрашивает:
read_orders, read_products, read_inventory
Причина этого заключается в том, что пользователи могут сами выбирать, когда они хотели бы обновить приложение, а не вынуждены делать это при изменении областей, необходимых приложению.
Как я могу передавать дополнительную информацию динамически?