Мы интегрируем наше приложение ruby on rails 4 с XML-RPC API Infusionsoft через их трехэтапную реализацию Oauth2.
(Документация здесь — https://developer.infusionsoft.com/docs/xml-rpc/#authentication-request-permission)
Мы настроили действие перенаправления, чтобы отправить пользователя на страницу аутентификации приложения Infusionsoft с идентификатором нашего приложения.
def connect_inf
redirect_to "https://signin.infusionsoft.com/app/oauth/authorize?client_id=XXXXXXX&redirect_uri=https://testappurl.herokuapp.com/websites/1/connect_inf/callback/&response_type=code&scope=full"
end
Затем, после того, как пользователь аутентифицируется, пользователь возвращается к нашему действию обратного вызова с URL-адресом, который выглядит следующим образом...
Где мы получаем код и используем RestClient, чтобы отправить его обратно в Infusionsoft для запроса токена доступа с параметрами в том порядке, в котором они указаны в их документации.
def get_inf
response = RestClient.post 'https://api.infusionsoft.com/token', :client_id => 'XXXXXXXXXXXXXX', :client_secret => 'XXXXXXX', :code => params[:code], :grant_type => 'authorization_code', :redirect_uri => 'https://testappurl.herokuapp.com/websites/1/connect_inf/callback/', :accept => 'text/xml'
end
Это возвращает RestClient::BadRequest: 400 Bad Request
Я предполагаю, что это как-то связано с тем, как передаются параметры.
params
? И действительно ли API обрабатывает XML? - person Eric Platon   schedule 19.01.2016