Мисля, че имаме подобни умове! Изпитвах точно същия проблем като теб. Мисля, че и двамата бяхме объркани от документацията!
Генерирах приложението си с помощта на shopify_app
gem. Това създаде следния метод в login_controller.rb
:
def finalize
if response = request.env['omniauth.auth']
sess = ShopifyAPI::Session.new(params['shop'], response['credentials']['token'])
session[:shopify] = sess
flash[:notice] = "Logged in"
redirect_to return_address
session[:return_to] = nil
else
flash[:error] = "Could not log in to Shopify store."
redirect_to :action => 'index'
end
end
Ред 3 от това (ShopifyAPI::Session.new
) извършва Стъпка 2 от удостоверяването на Shopify вместо нас. Извлича ни токен за постоянен достъп.
Променливата sess
сега ще съдържа две неща:
- Домейнът *.myshopify.com на магазина (
url
)
- Токен за постоянен достъп за запазване за бъдеща употреба (
token
)
Както каза Джон Дъф - вече имаме токен за достъп! Не е необходимо да ПУБЛИКУВАМЕ до https://SHOP_NAME.myshopify.com/admin/oauth/access_token
. Това се обработва за нас в кода, генериран от shopify_app
gem.
В моя метод за финализиране добавих ред:
def finalize
if response = request.env['omniauth.auth']
sess = ShopifyAPI::Session.new(params['shop'], response['credentials']['token'])
Shop.find_or_create_by_myshopify_domain(sess.url, access_token: sess.token)
...
Това създава магазин и му присвоява токена за достъп. Моделът My Shop има атрибути myshopify_domain
и access_token
.
В бъдеще, ако искам да използвам ShopifyAPI за този магазин, мога просто да следвам инструкциите на началната страница на shopify_api gem
Прекарах часове в опити да разгадая това. Не съм сигурен как документацията може да бъде по-ясна. Надяваме се, че ако проблемът се появи отново, хората ще намерят тази страница на StackOverflow!
Надявам се, че това е било от помощ за вас.
Наздраве, Ник
person
Nick Malcolm
schedule
07.07.2012