ruby-on-rails - Mendeley 自定义 OAuth 策略

标签 ruby-on-rails oauth omniauth mendeley

Mendeley有一个很棒的 AP​​I(事实上他们已经使用他们的 API 发起了一场比赛,不过这个问题并不是特定的),它使用 OAuth。

我正在尝试编写一个允许 Mendeley 身份验证的策略,并且在这样做时遇到了很多麻烦..

我去/auth/mendeley,它把我重定向到Mendeley.com,我进行身份验证,然后它把我重定向到一个除了这个之外什么都没有的页面

{"error":"Consumer key not found"}



他们提到这是一个 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 插件。结果,我写了一个可以帮助 future 人们的 gem 。它的工作原理与其他 OmniAuth 策略非常相似。

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

关于ruby-on-rails - Mendeley 自定义 OAuth 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972048/

相关文章:

ruby-on-rails - Ruby 功能开关/功能脚蹼

ruby-on-rails - EC2 中的 SSL 缓慢

ruby-on-rails - 如何从 rest api 返回 pdf 文件?

javascript - rails 中的 "invalid slice size"错误是什么? - @categories.each_slice(column_length) 做 |column|使用此代码发生。

ruby-on-rails - oauth-twitter 返回未定义的方法 'gsub' 为 nil :NilClass

php - 带有Google Analytics(分析)Oauth 2.0的Highcharts

php - 使用 php 通过 Twitter API 发布图像 + 状态

java - HttpURLConnection.getResponseCode() 在第二次调用时返回 -1

ruby-on-rails - 使用 OAuth 连接到 Linkedin 时,是否可以获取用户的非主要电子邮件地址?

ruby-on-rails - 通过 Nginx 代理时使用 OmniAuth 时出现 CallbackError