¡Creo que tenemos mentes similares! Estaba experimentando exactamente el mismo problema que tú. ¡Creo que estábamos confundidos por la documentación!
He generado mi aplicación usando la gema shopify_app
. Esto creó el siguiente método en 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
Línea 3 del mismo (ShopifyAPI::Session.new
) está haciendo Step 2 of the Shopify Authentication para nosotros. Nos está buscando un token de acceso permanente.
La variable sess
ahora contendrá dos cosas:
- El * .myshopify.com dominio de la tienda (
url
)
- Un token de acceso permanente a ahorrar para su uso futuro (
token
)
Como dijo John Duff, ¡ya tenemos un token de acceso! No necesitamos POSTAR a https://SHOP_NAME.myshopify.com/admin/oauth/access_token
. Se maneja para nosotros en el código generado por la gema shopify_app
.
En mi método finalize, he añadido una línea:
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)
...
Esto crea una tienda y le asigna el testigo de acceso. Mi modelo de tienda tiene los atributos myshopify_domain
y access_token
.
En el futuro, si quiero usar el ShopifyAPI de esa tienda, sólo puede seguir las instrucciones que se encuentran en la shopify_api gem homepage
pasé horas tratando de tuerca de éste hacia fuera. No estoy seguro de cómo la documentación podría ser más clara. Con suerte, si vuelve a surgir el problema, la gente encuentra esta página de StackOverflow.
Espero que esto haya sido una ayuda para usted.
Cheers, Nick
Se puede publicar la solicitud de prima y la respuesta? La clave de API que está utilizando también ayudaría. –
Agregué algunas imágenes que muestran la respuesta completa que recibo. También está la clave API (id del cliente). ¡Gracias por tu interés! – Augusto