我似乎无法弄清楚对 Mendeley 的经过身份验证的 API的调用的 OAuth 身份验证(请注意,这里有一个未维护的公共方法的宝石)。
我在他们的门户网站上创建了一个应用程序,它返回一个应用程序使用者密钥和使用者密码。我将它们弹出到一个 YAML 文件中,然后我可以在我的 Ruby 脚本中读取该文件。
cred = YAML.load_file("/home/cboettig/.mendeley_auth.yaml")
key = cred[:consumer_key]
secret = cred[:consumer_secret]
尝试方法一
似乎有一个使用 Faraday gem 进行身份验证的 Mendeley API 的身份验证调用示例。不幸的是,它似乎没有记录如何在最后的实际调用中获取令牌(或者它是哪个令牌?)。(它指向一个 github gist,将令牌生成为密钥的 SHA1 哈希,但我找不到使该工作正常的库依赖项,而且鉴于已经可用于处理 OAuth 的工具数量,它似乎过于复杂...... .) 这是我对方法1的了解:
## Method 1 -- how do I get the token?
key = cred[:key]
secret = cred[:secret]
token = ???? # How to get the token?
mendeley = Mendeley.new(token, secret) # Needs a token
profile = mendeley.get('/oapi/profiles/info/me') # example API call
尝试方法二
关于这个主题有一个现有的 SO 问题Mendeley Custom OAuth Strategy,我也未能成功遵循。它表明这可以使用 来处理Omniauth
,并且看起来这已经在omniauth-mendeley
gem 中实现了。不幸的是,我无法对有限的文档做出正面或反面,这暗示了这样的事情:
## Method 2 --
require 'omniauth-mendeley'
use OmniAuth::Builder do
provider :mendeley, ENV[key], ENV[secret]
end
好的,我可以得到密钥和秘密,但是我的 ruby-fu 非常有限,我不明白上面的语法。如何执行此操作,然后对 API 进行函数调用(例如profile/me
方法 1 尝试中显示的调用?尝试运行它只会让我出错
undefined method `use' for main:Object
使这些方法中的任何一种起作用的任何提示?