3 Stimmen

Benutzerdefinierte OAuth-Strategie von Mendeley

Mendeley hat eine großartige API (sie haben sogar einen Wettbewerb ausgeschrieben, bei dem ihre API verwendet wird; diese Frage bezieht sich jedoch nicht darauf), die OAuth verwendet.

Ich versuche, eine Strategie zu schreiben, um die Mendeley-Authentifizierung zu ermöglichen, und habe dabei ziemliche Schwierigkeiten.

Ich gehe zu /auth/mendeley, werde zu Mendeley.com weitergeleitet, authentifiziere mich und werde dann auf eine Seite weitergeleitet, auf der nichts anderes steht als dies

{"error": "Verbraucherschlüssel nicht gefunden"}

Sie erwähnen, dass dies ein 3-Bein-OAuth ist, ist das etwas, das einen zusätzlichen Schritt erfordert, als was OAuth normalerweise tut?

Hier ist, was ich habe:

# /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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X