2012-01-16 48 views
1

私はかなりの量の質問を見てきましたが、まだ私は混乱しています。投稿リクエストを送信し、jsonをレールに戻す方法

私は、Healthgraph API(ここではhttp://developer.runkeeper.com/healthgraph/registration-authorization)に接続するRailsアプリケーションを作成しています。

私はRails経由でPOSTリクエストを行うことになっています。パラメータに基づいてJSONを受信して​​受信します。私はouth2、runkeeperなどの宝石を試してきましたが、特定の依存関係のために動作しません。しかし、私はRails経由でPOSTする方法を失い、応答を受け取ります。

私はコントローラにコードを戻しますが、アクセストークンの取得方法はまだ分かりません。

デフrktest

respond_to 

if params[:code] 
    require 'oauth2' 

    @code=params[:code] 

    @cc_id=client_id 
    @client_s=client_secret 

else 

    @code="None" 

end 

また、私はJavaScriptでそれをやろうとしている - 私はむしろないだろう - それは私のクライアントの秘密が暴露葉以来。また、私はデータを受け取っていない。

<script type="text/javascript" src="javascripts/jquery-1.7.1.min.js"></script> 

<script type="text/javascript"> 

function get_access_token(code,ccid,cc_s){ 

$.ajaxSetup({ 
'beforeSend': function(xhr){ 
xhr.setRequestHeader("Accept", "text/javascript") 
} 
}); 

var sent = { 'grant_type': 'authorization_code', 
'code': code, 
'client_id': ccid, 
'client_secret': cc_s, 
'redirect_uri': 'http://myurl.com/rktest' 
}; 

document.write("<p>" + sent + "</p>"); 

$.ajax({ 
url: 'https://runkeeper.com/apps/token', 
data: sent, 
type: 'POST', 
dataType: 'json', 
success: function(data, status, xhr){ 
if (status === 'error' || !xhr.responseText){ 
handleError(); 
}else{ 

document.write("<p>" + data + "</p>"); 
document.write("<p>" + status + "</p>"); 
document.write("<p>" + xhr + "</p>"); 

} 
} 
}); 

} 

<%= 'get_access_token(\''[email protected]+'\',\''[email protected]_id+'\',\''[email protected]_s+'\');' %>     

また、ここに私のルートは、現在のファイルです:

match '/rktest', :to => 'main#rktest', :via => [:get, :post] 

でも、これは動作しません。

RestClient.post 'https://runkeeper.com/apps/token', {:params => { 
    :grant_type => 'authorization_code', 
    :code => @code, 
    :client_id => '8e9b36478b764ac38ef1bdabc6d14d60', 
    :client_secret => something, 
:redirect_uri => "http%3A%2F%2Fopenhealthdesigns.com%2Frktest"}} 

答えて

0

私はJSONを返すようにしたい方法でrespond_with @notesとコントローラファイルの先頭にrespond_to :jsonを使用していて、それがうまく動作します。

アプリはAjaxを使用して検索機能のデータを返しますが、データがどのように呼び出されているかは違いがあるとは思いません。

コンテキストのリッテよりコード:

class NotesController < ApplicationController 
    require 'coderay' 
    respond_to :json                                                   


def search 
    @notes = Note.fulltext_search(params[:title]) 
    @notes.each do |n| 
    n.content = CodeRay.scan(n.content, :ruby).div(:css => :class) 
    end 
    respond_with @notes 
end 

APIのドキュメント - メソッドが呼び出されているかによって異なります。 .jsonを使用している場合、respond_toブロックも機能します。

respond_with

respond_to

+0

イムを見たことがありますか?どこに外部サーバーに投稿していますか? – econclicks

+0

これは実際に取得要求ですが、要求のタイプは重要ではありません。私は、Rails 3.1アプリケーションでjsonをどのように返すのかを示しています。 respond_to:json行をファイルに置き、respond_with を使用すると、jsonが返されます。 –

関連する問題