希望您不要介意我发布问题,因为我不是程序员,需要“傻瓜”解释。尽管我可以使用基本的JavaScript,但从未使用过API。

,这就是我想要做的:

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

我希望在页面的一部分中填充基于Web的Mendeley引用管理器应用程序中带注释的引用的文件夹内容。

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

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

我已经为Mendeley api的“文档”做过努力,查阅了书籍,YouTube教程,在网络上搜索-使用api下载可以找到的数据的所有示例,都帮不了我如何使用Mendeley api。我甚至无法从Mendeley SDK中的“示例”中了解!

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

  • 向Mendeley注册并获得一个'client-id'和'secret':我已经完成了
  • 确定我想要哪种身份验证流程:这将是“隐式流程”,因为我需要直接从浏览器访问Mendeley。我了解“隐式流程”不需要“ secret ”,只需要“客户ID”。
  • 使用Mendeley JavaScript SDK:我使用的是“独立”版本-如自述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完全相同的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/

    10-09 04:06