Stripe Connect – 检索访问令牌

我正在尝试为rails 3.2.13 app设置Stripe Connect。 我已将用户定向到Stripe并从Stripe接收了授权代码:

HTTP/1.1 302 Found Location: http://localhost:3000/yourshop/stripe?scope=read_write&state=1234&code=AUTHORIZATION_CODE 

下一步是根据Stripe文档,通过access_token_url发出POST请求以接收access_token:

 curl -X POST https://connect.stripe.com/oauth/token \ -d client_secret=sk_test_code \ -d code=AUTHORIZATION_CODE \ -d grant_type=authorization_code 

我对curl没有任何经验是一个rails应用程序,我在Stripe API中找不到任何似乎这个POST请求包含在Stripe Gem中的东西:

gem文件:

 gem 'omniauth-stripe-connect' gem 'stripe' 

模型

 def save_with_stripe_account code = self.stripe_code customer = curl -X POST https://connect.stripe.com/oauth/token \ -d "client_secret=ENV['STRIPE_SECRET_KEY']" \ -d "code=code" \ -d "grant_type=authorization_code" raise customer.inspect end 

错误:

 syntax error, unexpected tCONSTANT, expecting keyword_do or '{' or '(' 

不确定是否只是错误的格式为rails中的curl或者是否需要使用其他东西。

试试这个食谱:

在rails应用程序中安装HTTParty gem

response = HTTParty.post(“ https://connect.stripe.com/oauth/token ”,:query => {client_secret:“#{ENV [‘STRIPE_SECRET_KEY’]}”,代码:response_code,grant_type:“authorization_code” })

然后你应该能够访问响应[‘access_token’],而不必在curl代码周围使用反引号。 它对我有用。

我得到了它的工作,可能不是最漂亮的方式:

我学到的第一件事是,如果你在curl代码周围添加反引号,curl可以在rails中工作。 这将返回只需要格式化的JSON。 我在我的模型中结束了以下内容:

 customer = ActiveSupport::JSON.decode(`curl -X POST https://connect.stripe.com/oauth/token -d client_secret=#{ENV['STRIPE_SECRET_KEY']} -d code=#{self.stripe_code} -d grant_type=authorization_code`) 

然后,我能够从客户哈希中提取数据,例如“access_token”:

 customer['access_token'] 

如果您正在使用omn​​iauth条带连接策略,那么它将由您处理并放置在omniauth回调控制器中的request.env["omniauth.auth"]中。

不需要做任何HTTParty,omniauth条带连接策略负责所有的事情。 美女!