我有两个运行在不同端口的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