2012-07-01 186 views
3

我正在开发一个带有导轨的shopify应用程序,我正在遵循这两个链接进行OAuth2身份验证:http://api.shopify.com/authentication.html & https://github.com/Shopify/shopify_apiShopify OAuth身份验证不会返回永久访问令牌

我已经陷入了我要求永久访问令牌的步骤。我已按照身份验证文档中的说明将client_id,client_secret &代码参数发布到https://SHOP_NAME.myshopify.com/admin/oauth/access_token,但我没有收到访问令牌。我得到的回应是状态200与一个空的身体和头。

代码:

http = Net::HTTP.new("https://#{params[:shop].to_s.strip}") 
request = Net::HTTP::Post.new("/admin/oauth/access_token") 
request.set_form_data({ 
    "client_id" => ShopifyApp.configuration.api_key, 
    "client_secret" => ShopifyApp.configuration.secret, 
    "code" => params[:code].to_s.strip 
}) 
response = http.request(request) 

响应:

@body=[], 
@header={}, 
@status=200, 

什么是困惑我更是(我可能是错在这里,但)的shopify_app似乎并没有做到这一步。 我也发现了这个相似的问题:Unable to receive a permanent access token for my Shopify App但它还没有被回答。

编辑:删除.myshopify.comhttp = Net::HTTP.new("https://#{params[:shop].to_s.strip}"),因为它是一个错字。

编辑2:
我尝试从HTML表单发布给我的结果,但是我无法使用上面的示例或与其他客户端gem在我的代码中工作。
对这里发生的事情仍然非常困惑。

回答

1

请参阅question you linked to提供的答案。

如果这对您来说不是同一个问题,那么您可以发送正在发送/接收的原始请求和响应数据吗?您正在使用的API密钥也会有所帮助。

我建议在命令行上使用curl来尝试它,如果这不起作用,您可以在每个步骤中发布每个卷曲字符串。

shopify_app依赖于omniauth和omniauth-shopify-oauth2,它处理oauth认证。

+0

当我从一个基本的HTML表单发送参数时,我能够获得访问令牌,所以我认为这个问题可能与我从应用内发布数据的方式有关。 –

+0

另外从omniauth-shopify-oauth2返回的令牌是永久访问令牌还是临时访问令牌? 我完全接受错误,因为我还在学习,但它看起来对我来说是暂时的。 –

+0

它应该是永久令牌。 –