Подключите Rails 3 к Salesforce / любому другому приложению через OAuth - PullRequest
0 голосов
/ 22 февраля 2012

Кто-нибудь подключался к Salesforce через Rails 3 App через 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 Ответ

1 голос
/ 27 февраля 2012

Драгоценный камень 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
...