Я думаю, что у нас схожие мысли! Я столкнулся с той же проблемой, что и вы. Я думаю, что мы оба были сбиты с толку документацией!
Я создал свое приложение, используя гем shopify_app
. Это создало следующий метод в 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
.
В моем методе finalize я добавил строку:
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.
Я часами пытался выкрутить это. Я не уверен, как документация может быть более ясной. Надеюсь, если проблема возникнет снова, люди найдут эту страницу StackOverflow!
Надеюсь, это помогло вам.
Привет, Ник
person
Nick Malcolm
schedule
07.07.2012