我有兩個運行在不同端口的rails應用程序。第一個在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:我有current_user.present? # => false
的情況下,我通過授權info
行動(before_filter :login_or_oauth_required, :except => [:info]
),否則我得重定向到登錄頁面。
我已更新問題文本。 [本文](http://kentonwhite.wordpress.com/2010/07/29/creating-an-oauth-provider-with-oauth-plugin)僅包含幾句關於測試OAuth提供者的信息:「選擇控制器操作目前需要登錄'@ response = @ access_token.get'/ accounts''「。但是在我的'/user_info.json'操作之前我已經重定向了。 – ck3g 2012-02-02 14:53:04