使用 Rake 在 Shopify 中创建 webhook
Use Rake to create webhooks in Shopify
目前,如果我 add/remove 我的应用程序中的 webhook 要反映在 shopify 应用程序中,用户必须重新安装该应用程序。我需要一种避免这种情况的方法,所以我想我会使用 rake。
为此,我使用 Rails ShopifyAPP。我的应用使用 Rails 5.
config/application.rb:
...
config.after_initialize do
Rails.application.load_tasks
Rake::Task['shopifyapp:shopify_webhooks'].invoke
end
...
lib/tasks/shopify_webhooks.rake:
namespace :shopifyapp do
desc "create webhooks in shopify"
task :shopify_webhooks do
ShopifyApp.configure do |config|
config.webhooks = [
{topic: 'carts/update', address: 'https://some-external-address', format: 'json'},
]
end
puts "works" # outputs when server restarts
end
end
我的第六感告诉我 rake 文件有问题。我错过了什么吗?有什么问题? Webhook 未创建。
如果我在 config/initializers/shopify_app.rb
中添加一个新的 webhook,它只有在重新安装应用程序时才会起作用。
由于您拥有商店的有效身份验证令牌,因此在您的 rake 任务中只需连接到商店,并使用 API 创建 webhook。这很容易做到。
ShopifyAPI::Base.activate_session(ShopifyAPI::Session.new(shop,token))
ShopifyAPI::Webhook.create(topic: 'orders/paid', address: 'https:foo', format: 'json')
我认为这更符合如何使用 rake,而不是尝试在 rake 任务中模仿 Rails。
@David Lazar 是正确的,但对于像我这样的菜鸟来说不是那么清楚。我希望所有连接的商店都获得更新我需要先从数据库中获取所有连接的商店:
namespace :shopifyapp do
desc "create webhooks in shopify"
task :shopify_webhooks do
Shop.all.each do |s|
domain = s.shopify_domain
token = s.shopify_token
ShopifyAPI::Base.activate_session(ShopifyAPI::Session.new(domain, token))
ShopifyAPI::Webhook.create(
topic: 'carts/update',address: 'https://foo ...,
)
end
end
end
现在我可以 运行 从控制台或服务器重新启动时执行 rake 任务!好的。如果我有成千上万的用户(商店),则不确定性能。
目前,如果我 add/remove 我的应用程序中的 webhook 要反映在 shopify 应用程序中,用户必须重新安装该应用程序。我需要一种避免这种情况的方法,所以我想我会使用 rake。
为此,我使用 Rails ShopifyAPP。我的应用使用 Rails 5.
config/application.rb:
...
config.after_initialize do
Rails.application.load_tasks
Rake::Task['shopifyapp:shopify_webhooks'].invoke
end
...
lib/tasks/shopify_webhooks.rake:
namespace :shopifyapp do
desc "create webhooks in shopify"
task :shopify_webhooks do
ShopifyApp.configure do |config|
config.webhooks = [
{topic: 'carts/update', address: 'https://some-external-address', format: 'json'},
]
end
puts "works" # outputs when server restarts
end
end
我的第六感告诉我 rake 文件有问题。我错过了什么吗?有什么问题? Webhook 未创建。
如果我在 config/initializers/shopify_app.rb
中添加一个新的 webhook,它只有在重新安装应用程序时才会起作用。
由于您拥有商店的有效身份验证令牌,因此在您的 rake 任务中只需连接到商店,并使用 API 创建 webhook。这很容易做到。
ShopifyAPI::Base.activate_session(ShopifyAPI::Session.new(shop,token))
ShopifyAPI::Webhook.create(topic: 'orders/paid', address: 'https:foo', format: 'json')
我认为这更符合如何使用 rake,而不是尝试在 rake 任务中模仿 Rails。
@David Lazar 是正确的,但对于像我这样的菜鸟来说不是那么清楚。我希望所有连接的商店都获得更新我需要先从数据库中获取所有连接的商店:
namespace :shopifyapp do
desc "create webhooks in shopify"
task :shopify_webhooks do
Shop.all.each do |s|
domain = s.shopify_domain
token = s.shopify_token
ShopifyAPI::Base.activate_session(ShopifyAPI::Session.new(domain, token))
ShopifyAPI::Webhook.create(
topic: 'carts/update',address: 'https://foo ...,
)
end
end
end
现在我可以 运行 从控制台或服务器重新启动时执行 rake 任务!好的。如果我有成千上万的用户(商店),则不确定性能。