Tôi nghĩ chúng ta có tâm trí tương tự! Tôi đã gặp vấn đề tương tự như bạn. Tôi nghĩ cả hai chúng tôi lẫn lộn với tài liệu!
Tôi đã tạo ứng dụng bằng đá quý shopify_app
. Điều này tạo ra các phương pháp sau đây trong 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
Dòng 3 đó (ShopifyAPI::Session.new
) đang làm Step 2 of the Shopify Authentication cho chúng ta. Nó tìm nạp cho chúng tôi một mã thông báo truy cập vĩnh viễn.
Biến sess
bây giờ sẽ chứa hai thứ:
- Các * .myshopify.com miền của các cửa hàng (
url
)
- Một thẻ truy cập vĩnh viễn lưu để sử dụng sau (
token
)
Như John Duff đã nói - chúng tôi đã có mã thông báo truy cập! Chúng tôi không cần phải POST đến https://SHOP_NAME.myshopify.com/admin/oauth/access_token
. Nó được xử lý cho chúng tôi trong mã được tạo bởi đá quý shopify_app
.
Trong phương pháp Finalize của tôi, tôi đã thêm một dòng:
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)
...
Điều này tạo ra một cửa hàng và gán nó token truy cập. Mô hình Cửa hàng của tôi có các thuộc tính myshopify_domain
và access_token
.
Trong tương lai, nếu tôi muốn sử dụng ShopifyAPI cho cửa hàng đó, tôi có thể chỉ cần làm theo các hướng dẫn được tìm thấy trên shopify_api gem homepage
Tôi đã mất nhiều giờ cố gắng để Nut này ra ngoài. Tôi không chắc cách tài liệu có thể rõ ràng hơn. Hy vọng rằng nếu vấn đề xuất hiện trở lại, mọi người sẽ tìm thấy trang StackOverflow này!
Tôi hy vọng đây là trợ giúp cho bạn.
Chúc mừng, Nick
Nguồn
2012-07-07 09:02:36
Bạn có thể đăng yêu cầu và phản hồi thô không? Khóa API bạn đang sử dụng cũng sẽ trợ giúp. –
Tôi đã thêm một số hình ảnh hiển thị phản hồi đầy đủ mà tôi nhận được. Ngoài ra còn có khóa API (id ứng dụng khách). Cảm ơn sự nhiệt tình của bạn! – Augusto