javascript - Mendeley API - 如何使用 JavaScript SDK - 隐式流认证

标签 javascript api mendeley implicit-flow

我希望您不会介意我发布问题,因为我不是程序员并且需要“傻瓜式”解释。虽然我会使用基本的 JavaScript,但我从未使用过 API。

这就是我想要做的:

我在我的硬盘驱动器上制作了一个 HTML 页面(我最终想将其与 PhoneGap 之类的东西打包到一个移动应用程序中,以便与我的同事共享)。

我的页面的一部分,我想填充一个文件夹的内容,该文件夹包含我在基于 Web 的 Mendeley 引用管理器应用程序中的注释引文。

目前,我正在用一个 JSON 文件填充我的页面(我从 Mendeley 导出并重新格式化 - 只是为了让我的引文格式代码正确 - 这部分很好,看起来很棒)。

但我不希望我的页面填充以前导出的文件,而是我的 Mendeley 文件夹的最新内容在我的应用程序打开时自动下载到我的页面。

我已经研究了 Mendeley api“文档”,查阅了书籍、YouTube 教程、搜索了网络 - 所有使用 api 下载我能找到的数据的示例,都无法帮助我弄清楚如何使用 Mendeley API。我什至无法从 Mendeley SDK 中的“示例”中理解!

到目前为止,这是我所能理解的(或者可能是误解了!):

  1. 在 Mendeley 注册并获得“client-id” 和“secret”:我已经做到了
  2. 决定我想要什么样的身份验证流程:这将是“隐式流程”,因为我需要直接从浏览器访问 Mendeley。我知道“隐式流”不需要“ secret ”,只需要“客户端 ID”。
  3. 使用 Mendeley JavaScript SDK:我正在使用“独立”版本 - 我在我的页面中使用脚本标记引用它,如 Readme SDK 文件中所述。我还复制并粘贴了隐式流所需的代码片段到名为“oauth-config.js”的文件中,如 SDK 示例文件中所述:oauth-config.implicit-grant.js.dist

但是现在呢?

  • 我该如何使用 SDK 来获取我的数据?我找不到方向。
  • 假设我可以从 Mendeley 获取数据,处理 JSON 以显示在我的页面中的脚本如何访问响应数据?

最佳答案

让我举例说明如何使用 Mendeley JS API。这是我使用隐式流程登录并检索用户个人图书馆中所有文档的简约实现。

var sdk = require('@mendeley/api');
var api = sdk({
  authFlow: sdk.Auth.implicitGrantFlow({
    clientId: <YOUR_CLIENT_ID_GOES_HERE>
  })
})

api.documents.list().then(function(docs) {
    console.log('Success!');
    console.log(docs);
}).catch(function(response) {
    console.log('Failed!');
    console.log('Status:', response.status);
});

您可以扩展它以访问 SDK 提供的任何 API。

然而,由于身份验证的工作方式,您需要在您的网站上使用与您在注册​​客户端时在“重定向 URL”中提供的完全相同的 URL 托管此脚本。否则您将收到一条错误消息 Redirection URI does not match the one registered for this application .

对于问题的第二部分,我相信您是在问如何检索某个 Mendeley 文件夹中的所有文档(如果我理解不正确,请纠正我)。假设您有一个文件夹 ID 为 aaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 的文件夹.然后您可以修改上面的示例以检索该文件夹中的所有文档,如下所示:

var sdk = require('@mendeley/api');
var api = sdk({
  authFlow: sdk.Auth.implicitGrantFlow({
    clientId: <YOUR_CLIENT_ID_GOES_HERE>
  })
})

api.documents.list({
    folderId: 'aaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
}).then(function(docIds) {
    console.log('Success!');
    console.log(docIds);
}).catch(function(response) {
    console.log('Failed!');
    console.log('Status:', response.status);
});

在这种情况下,响应将包含文档 ID,因此您需要调用 api.documents.retrieve(<DOCUMENT_ID>)获取文档详细信息的 API。

关于javascript - Mendeley API - 如何使用 JavaScript SDK - 隐式流认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44965399/

相关文章:

javascript - 为什么 Await 不阻塞下一行代码?

javascript - 如何缩短这个功能?

android - 在 eclipce 上安装 facebook api 后发现 2 个版本的 .jar。在我的新应用中

java - 在 rest api 中返回 json 中的任何异常

.net - .NET 中带验证的 OAuth

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

javascript - jQueryUI 按钮 : How to change Button-Icon 'color'

javascript - ExtJS - 保存树面板的状态。

php - 黑钻问号 - Youtube API - J�r�my

Mendeley 按查询参数搜索