Program Club

Rails 앱에서 httparty로 기본 인증을 사용하는 방법은 무엇입니까?

proclub 2020. 11. 10. 22:32
반응형

Rails 앱에서 httparty로 기본 인증을 사용하는 방법은 무엇입니까?


기본 인증이있는 'httparty'의 명령 줄 버전은 간단하고 훌륭하게 작동합니다.

httparty -u username:password http://example.com/api/url

하지만 이제는 Rails 앱 내에서 HTTParty.get 호출에 기본 인증을 추가 할 수있는 방법을 찾고 있습니다. 먼저 테스트 목적으로 컨트롤러에서 로그인 자격 증명을 하드 코딩하고 싶습니다. 작동하는지 확인하기 위해. 그러나 나는 이것을 어떻게 전달할 수 있는지 어떤 문서 나 예제도 찾을 수 없습니다.

자격 증명이없는 HTTParty.get은 정상적으로 작동합니다.

@blah = HTTParty.get("http://twitter.com/statuses/public_timeline.json")

하지만 -u username : password 부분 을 받아들이는 변형을 어떻게 만들 수 있는지 모르겠습니다 .

저에게 다음 도전은 (Ruby / Rails를 처음 접하는) 사용자 양식에서 사용자 자격 증명을 가져 와서 동적으로 전달하는 것이지만, 이제 가장 중요한 것은 하드 코딩 된 버전이 작동하도록하는 것입니다.


auth = {:username => "test", :password => "test"}
@blah = HTTParty.get("http://twitter.com/statuses/public_timeline.json", 
                     :basic_auth => auth)

두 점,

  1. Twitter의 API를 사용하는 경우, 내가 착각하지 않는 한 기본 인증을 더 이상 허용하지 않는다고 생각합니다. (따라서 OAuth 로그인을 위해 OmniAuth 와 같은 것을 살펴볼 수 있습니다 . HTTParty 또는 로그인이 필요하지 않습니다. 이를위한 형식으로 Twitter 로그인에 연결하고 사용자가 여기에 자격 증명을 입력하면 Twitter가 인증 된 앱에 콜백 요청을 보냅니다. OmniAuth는 대부분의 작업을 수행하며 필요한 정보를 가져 오기만하면됩니다. 콜백 경로에서 무엇을 제공하는지.

  2. 그러나 그렇다하더라도 애플리케이션에 고유 한 OAuth '소비자 키'및 '소비자 비밀'이 필요합니다 (사용자와 구분하여 Twitter가 애플리케이션에 권한을 부여하는 방법). 그리고 소스 코드에서 이들 또는 인증 키를 원하지 않습니다.

이를 수행하는 일반적인 방법은 소스 제어에 체크인 되지 않은config/omniauth.yml 파일에 붙여 넣는 것입니다 .

twitter:
  key: CONSUMER_KEY
  secret: CONSUMER_SECRET

그런 다음 이니셜 라이저에서로드합니다 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

기본 인증 사용자 이름 / 비밀번호를로드하는 것과 유사한 접근 방식을 취할 수 있습니다. HTTParty 호출을 수행 할 때마다 액세스 할 수있는 일부 개체에 붙여 넣기 만하면됩니다.

참고 URL : https://stackoverflow.com/questions/7627419/how-to-use-basic-authentication-with-httparty-in-a-rails-app

반응형