Думаю, у нас схожие умы! Я испытывал то же самое, что и вы. Я думаю, что мы оба были смущены документацией!
Я сгенерировал свое приложение, используя драгоценный камень 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
) делает Step 2 of the Shopify Authentication для нас. Это дает нам постоянный токен доступа.
Переменная sess
теперь содержит две вещи:
- Символ * .myshopify.com домен магазина (
url
)
- постоянный маркер доступа, чтобы сохранить для будущего использования (
token
)
Как сказал Джон Дафф - у нас уже есть токен доступа! Нам не нужно POST до https://SHOP_NAME.myshopify.com/admin/oauth/access_token
. Он обрабатывается для нас в коде, создаваемом камнем shopify_app
.
В моем методе финализации, я добавил строку:
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)
...
Это создает магазин и присваивает ему маркер доступа. Модель моего магазина имеет атрибуты myshopify_domain
и access_token
.
В будущем, если я хочу использовать ShopifyAPI для этого магазина, я могу просто следовать инструкциям, приведенным на shopify_api gem homepage
Я провел часы, пытаясь Nut этот. Я не уверен, как документация может быть более четкой. Надеемся, что если проблема снова возникнет, люди найдут эту страницу StackOverflow!
Надеюсь, это помогло вам.
Cheers, Ник
Вы можете разместить необработанный запрос и ответ? Ключ API, который вы используете, также поможет. –
Я добавил несколько изображений, показывающих полный ответ, который я получаю. Существует также ключ API (идентификатор клиента). Спасибо за ваш интерес! – Augusto