ruby - scotch - ¿Cómo usar la autenticación básica con httparty en una aplicación de Rails?
scotch rails api only (2)
Dos puntos,
Si está presionando la API de Twitter, a menos que esté equivocado, no creo que permitan la autenticación básica más :( Por lo tanto, es posible que desee buscar algo como OmniAuth para el inicio de sesión de OAuth. No necesita HTTParty o un signo- En forma de esto, se vincula al inicio de sesión de Twitter y el usuario ingresa las credenciales allí, luego Twitter envía una solicitud de devolución de llamada a su aplicación una vez autenticada. OmniAuth hace la mayor parte del trabajo por usted, solo saca la información que necesita de lo que te da en la ruta de devolución de llamada.
Pero aun así, necesitará la "clave de consumidor" y el "secreto de consumidor" de OAuth que son específicos de su aplicación (cómo Twitter autoriza su aplicación, a diferencia del usuario). Y no quiere estas ni ninguna clave de autenticación en su código fuente.
Una forma típica de hacerlo es config/omniauth.yml
archivo config/omniauth.yml
que no está registrado en el control de origen:
twitter:
key: CONSUMER_KEY
secret: CONSUMER_SECRET
Y luego cárguelos en una config/initializers/omniauth.rb
:
consumers = YAML.load("#{Rails.root}/config/omniauth.yml")
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, consumers[''twitter''][''key''], consumers[''twitter''][''secret'']
end
Podrías tomar un enfoque similar cargando nombres de usuario / contraseñas básicos de autenticación, simplemente pégalos en algún objeto al que tengas acceso desde donde hagas las llamadas a HTTParty.
La versión de línea de comando de ''httparty'' con autenticación básica funciona de manera simple y excelente:
httparty -u username:password http://example.com/api/url
Pero ahora estoy buscando la manera de agregar la autenticación básica a una llamada de HTTParty.get desde una aplicación de Rails. En primer lugar, para fines de prueba, quiero codificar las credenciales de inicio de sesión en el Controlador. Solo para asegurarme de que funciona. Pero no puedo encontrar ninguna documentación o ejemplos de cómo puede pasarlos.
Un HTTParty.get sin credenciales funciona bien:
@blah = HTTParty.get("http://twitter.com/statuses/public_timeline.json")
Pero no veo cómo puedo hacer una variación sobre esto que acepte la parte -u nombre de usuario: contraseña .
El siguiente desafío para mí (soy muy nuevo para Ruby / Rails) es obtener las credenciales de usuario de un formulario de usuario y transmitirlo de forma dinámica, pero lo más importante para mí ahora es que funcione la versión codificada.
auth = {:username => "test", :password => "test"}
@blah = HTTParty.get("http://twitter.com/statuses/public_timeline.json",
:basic_auth => auth)