2012-02-22 10 views
0

oauth経由でSalesforceにRails 3 Appを通じて接続した人はいますか?同じことをするためのポストコードをお願いします。私は同じにしようとしていますが、私は以下のいくつかのエラーを取得することは私のコードRails 3をSalesforce/OAuth経由で他のアプリケーションに接続

 def oauth_client 
     consumer_key = '....' 
     consumer_secret = '....' 
     oauth_options = { 
      :site    => 'https://login.salesforce.com', 
      :scheme    => :body, 
      :request_token_path => '/_nc_external/system/security/oauth/RequestTokenHandler', 
      :authorize_path  => '/setup/secur/RemoteAccessAuthorizationPage.apexp', 
      :access_token_path => '/_nc_external/system/security/oauth/AccessTokenHandler', 
     } 
     OAuth::Consumer.new consumer_key, consumer_secret, oauth_options 
     end 

     def oauth_redirect_uri 
     uri = URI.parse(request.url) 
     uri.path = '/sfdc/oauth_callback' 
     uri.query = nil 
     # uri = "http://localhost:3000/sfdc/oauth_callback" 
     uri.to_s 
     end 

     def oauth_connect 
     consumer_key = '...' # from SalesForce 
     consumer = oauth_client 
     request_t = consumer.get_request_token 
     redirect_to request_t.authorize_url(
     :redirect_uri => oauth_redirect_uri, 
     :oauth_consumer_key => consumer_key 
     ) 
     end 

     def oauth_callback 
     access = request_t.get_access_token :oauth_verifier => params[:oauth_verifier] 
     p access 
     render :text => access.token 
     end 

エラーundefined method get_access_token for #<ActionDispatch::Request:0x12b79f370>です。変数requestはここではnilです。どうすれば元に戻すことができますか?

答えて

1

rforce宝石には、以下に貼り付けたかなりの例があります。しかし、あなた自身のロールアップの代わりにrforceを使いたいかもしれません。

def init_server(url) 
    @url = URI.parse(url) 

    if (@oauth) 
    consumer = OAuth::Consumer.new \ 
     @oauth[:consumer_key], 
     @oauth[:consumer_secret], 
     { 
     :site => url, 
     :proxy => @proxy 
     } 

    consumer.http.set_debug_output $stderr if show_debug 

    @server = OAuth::AccessToken.new \ 
     consumer, 
     @oauth[:access_token], 
     @oauth[:access_secret] 

    class << @server 
     alias_method :post2, :post 
    end 
    else 
    @server = Net::HTTP.Proxy(@proxy).new(@url.host, @url.port) 
    @server.use_ssl = @url.scheme == 'https' 
    @server.verify_mode = OpenSSL::SSL::VERIFY_NONE 

    # run ruby with -d or env variable SHOWSOAP=true to see SOAP wiredumps. 
    @server.set_debug_output $stderr if show_debug 
    end 
end 
関連する問題