После прочтения Stored Android Accounts for Authentication of Rails + Devise Accounts Я пытаюсь настроить конечную точку API Rails 3, которая может проверить полученный токен OAuth через запрос GET в Google.Запрос GET внутри конечной точки POST API мешает «reply_with»
Я настроил маршрут как:
namespace :api, defaults: {format: :json} do
namespace :v1 do
get 'auth/verify' => 'omniauth_verifications#verify_token'
...
end
end
И в api/v1/omniauth_verifications_controller.rb
я определил метод как:
respond_to :json
def verify_token
token = params[:token]
response = RestClient.get("https://www.googleapis.com/oauth2/v2/userinfo", { params: { access_token: token }})
if response.code == 200
data = JSON.parse(response.to_s)
@user = User.find_for_verfied_token_response(data.symbolize_keys)
end
respond_with @user
end
Проблема в том, что в ответ я получаю при ударе конечная точка 500 Internal Server Error
с сообщением Template Missing
Если я прокомментирую строку с RestClient.get
и вместо этого сделаю respond_with User.find(1)
ответ 201
с пользовательским объектом json, отформатированным как ожидалось.
Почему Rails настаивает на рендеринг шаблона, хотя я прямо говорю об этом respond_with @user
? Является ли RestClient
принятием моего ответа или что происходит?
Я также попытался создать исключение после RestClient.get
, но выход по-прежнему Template Missing
.
Да у меня есть, он по-прежнему отвечает '500 - Шаблон Error' – Jach0
Я обновил свой код. Хотя я не думаю, что это работает. Он решает проблему, когда код ответа не равен 200. – jason328