Mendeley定制OAuth战略

时间:2011-05-12 00:25:18

标签: ruby-on-rails oauth omniauth mendeley

Mendeley有一个很棒的API(实际上他们已经使用他们的API进行了竞赛,但这个问题并不特定于此),它使用了OAuth。

我正在尝试编写允许Mendeley身份验证的策略,并且在执行此操作时遇到了相当多的麻烦..

我去了/ auth / mendeley,它将我重定向到Mendeley.com,我进行了身份验证,然后它将我重定向到一个没有任何内容的页面,但是这个

  

{“error”:“找不到消费者密钥”}

他们提到这是一个三腿OAuth,是否需要额外的步骤而不是OAuth通常做的事情?

这就是我所拥有的:

# /config/initializers/omniauth.rb

module OmniAuth
  module Strategies
    # tell omniauth to load the strategy
    autoload :Mendeley, 'lib/mendeley'
  end
end

# gather oauth credentials from the yml file
OAUTH = YAML.load_file(File.join(Rails.root, "config", "oauth.yml"))

# load all the possible oauth strategies
ActionController::Dispatcher.middleware.use OmniAuth::Builder do
  provider OmniAuth::Strategies::Mendeley, OAUTH['mendeley']['consumer_key'], OAUTH['mendeley']['consumer_secret']
end

# lib/mendeley.rb

require 'omniauth/oauth'
require 'multi_json'

module OmniAuth
  module Strategies

    # Omniauth strategy for using oauth2 and mendeley.com

    class Mendeley < OAuth2
      def initialize(app, consumer_key = nil, consumer_secret = nil, &block)
        client_options = {
          :site => 'http://api.mendeley.com'
        }

        super(app, :mendeley, consumer_key, consumer_secret, client_options, &block)
      end
    end
  end
end

3 个答案:

答案 0 :(得分:1)

我知道你很久以前问过这个问题,但我自己需要一个Menniley的OmniAuth插件。结果,我写了一个宝石,将来可以帮助人们。它与其他OmniAuth策略非常相似。

https://github.com/fractaloop/omniauth-mendeley

答案 1 :(得分:0)

通过查看this page,看起来它们支持OAuth 1,但在您的代码中,您继承了OAuth2

你确定他们支持吗?

答案 2 :(得分:0)