как отправить запрос на почту и получить json обратно в рельсы - PullRequest
1 голос
/ 17 января 2012

Я просмотрел немало вопросов - но я все еще в замешательстве.

Я создаю приложение Rails, которое соединяется с Healthgraph API (здесь http://developer.runkeeper.com/healthgraph/registration-authorization).

Я должен сделать POST-запрос через Rails - на основе параметра, который я получаю, а затем получаю JSON. Я пробовал outh2, runkeeper и другие гемы, и они не работают из-за определенной зависимости. Тем не менее, я заблудился о том, как POST через Rails и получить ответ.

Я возвращаю код обратно в мой контроллер - однако я все еще не знаю, как получить токен доступа.

def 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(\''+@code+'\',\''+@cc_id+'\',\''+@cc_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"}}

Ответы [ 2 ]

0 голосов
/ 17 января 2012
0 голосов
/ 17 января 2012

Я использую respond_to :json в начале файла контроллера с respond_with @notes в методе, который я хочу вернуть 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 также будет работать блок response_to.

response_with

response_to

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...