Mendeley有一个出色的API(实际上,他们使用自己的API进行了比赛,但是这个问题并不特定于此),它使用了OAuth。
我正在尝试编写允许Mendeley身份验证的策略,但是这样做有很多麻烦。
我转到/ auth / mendeley,它将我重定向到Mendeley.com,我进行身份验证,然后将我重定向到一个没有任何内容的页面,但这
{“错误”:“找不到用户密钥”}
他们提到这是3步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
最佳答案
我知道您很久以前问过这个问题,但是我本人需要Mendeley的OmniAuth插件。结果,我写了一颗 gem ,应该会在将来帮助人们。它的工作原理与其他OmniAuth策略非常相似。
https://github.com/fractaloop/omniauth-mendeley