다른 포트에서 실행되는 두 개의 레일 응용 프로그램이 있습니다. 첫 번째는 3000, 두 번째는 4000입니다. 둘 다 정식으로 Devise gem을 사용합니다. 첫 번째 응용 프로그램은 OAuth 공급자 역할을하고 두 번째 응용 프로그램은 OAuth 소비자 역할을 담당합니다. 내 환경을 구축하기 위해 this 및 that 자습서를 따라 왔습니다.OAuth를 사용하는 응용 프로그램 간의 인증
거의 모든 것이 정상적으로 작동합니다. 나는 소비자 애플리케이션을위한 핵심 및 비밀을 성공적으로 생성했습니다. 그리고 공급자 신청서에 성공적으로 승인합니다.
내 클라이언트 응용 프로그램에서 두 가지 방법이 있습니다 : 공급자 응용 프로그램에서
def auth
@consumer = OAuth::Consumer.new 'KEY', 'SECRET', :site => "http://localhost:3000"
@request_token = @consumer.get_request_token
session[:request_token] = @request_token
redirect_to @request_token.authorize_url
end
def auth_callback
@request_token ||= session[:request_token]
@access_token = @request_token.get_access_token :oauth_verifier => params[:oauth_verifier]
@request = @access_token.get '/user_info.json'
render :text => @request.body.inspect
end
그리고 API 방법 : @request = @access_token.get '/user_info.json'
내가 전화 할 때 : 나는 줄에서 사용자 정보를 얻는 때
class UsersController < InheritedResources::Base
before_filter :login_or_oauth_required
load_and_authorize_resource
def info
logger.info current_user.present? # => false
@info = { } # here I've collect user info for current_user
respond_to do |format|
format.json { render :json => @info }
end
end
end
젠장 일이 이미 소비자 응용 프로그램 사용자가 공급자 응용 프로그램에서 권한이 없습니다.
제공자의 자원으로 승인을받을 수 있습니까?
UPD : 내가 그렇지 않으면 내가 로그인 페이지로 리디렉션있어 한 info
행동 (before_filter :login_or_oauth_required, :except => [:info]
)에 대한 인증을 통과 할 경우 current_user.present? # => false
을 가지고있다.
질문 텍스트를 업데이트했습니다. [이 기사] (http://kentonwhite.wordpress.com/2010/07/29/creating-an-oauth-provider-with-oauth-plugin)에는 ho에 대해 OAuth 공급자를 테스트하는 몇 가지 단어가 들어 있습니다. "컨트롤러 동작 선택 현재'@ response = @ access_token.get '/ accounts''라고 로그인해야합니다. 하지만 '/user_info.json'작업 전에 리디렉션되었습니다. – ck3g