从API创build链接的笔记本

我正在使用Evernote API,试图在我们的Web应用程序中创build链接的笔记本。

我们正在使用evernote-sdk-js版本的API。

我们可以从API创build共享笔记本。 此外,我们能够创build一个链接的笔记本电脑,并收到有效的答复。 问题是链接的笔记本无法正常工作。 笔记本在ListLinkedNotebook API调用中返回,但是当我尝试授权它时,我收到一个错误。

Error { identifier: 'SharedNotebook.id', key: 'xxxx' } 

从我读到的意思是笔记本不再由业主共享。 这是不正确的,因为所有者帐户仍然在“共享”窗口中显示待处理的请求。

这是逻辑stream程:

1)用户input他们想要共享笔记本的人的电子邮件地址。 向我们的服务器请求创buildShareNotebook。

我们这样创build一个共享的笔记本:(从所有者帐户)

  var notebook = new Evernote.SharedNotebook(); notebook.notebookGuid = guid; notebook.email = email; notebook.privilege = Evernote.SharedNotebookPrivilegeLevel.FULL_ACCESS; var userclient = new Evernote.Client({token: token, sandbox: sandbox}); var notestore = userclient.getNoteStore(); notestore.createSharedNotebook(userclient.token, notebook, function(err, results){ callback(err, results); }); 

以下是一个例子:

 { allowPreview:null email:"...@gmail.com" id:12345 notebookGuid:"d2fa3cbe-...." notebookModifiable:false privilege:4 recipientSettings:null requireLogin:null serviceCreated:1469079222000 serviceUpdated:1469079222000 shareKey:"xxxx-sxxx" userId:999xxxxx username:null } 

2)由于Evernote不从API请求发送电子邮件,我们手动向用户发送链接以激活共享笔记本。

创buildLinkedNotebook的代码:(从共享用户帐户)

  var notebook = new Evernote.LinkedNotebook; notebook.shareName = options.shareName; notebook.username = options.username; notebook.shardId = options.shardId; notebook.shareKey = options.shareKey; var userclient = new Evernote.Client({token: token, sandbox: sandbox}); var notestore = userclient.getNoteStore(); notestore.createLinkedNotebook(userclient.token, notebook, function(err, results){ callback(err, results); }); 

而示例回应:

 { shareName: 'Notebook Name', username: '...', shardId: 'sxxx', shareKey: 'xxxx-sxxx', uri: null, guid: '4f8df3c2-...', updateSequenceNum: 630, noteStoreUrl: 'https://www.evernote.com/shard/sxxx/notestore', webApiUrlPrefix: 'https://www.evernote.com/shard/sxxx/', stack: null, businessId: null } 

有没有人有幸从API创build链接的笔记本电脑? 看起来像createLinkedNotebook API调用不能正常工作。 谢谢你的帮助。

你不能做你现在想做的事,对不起。

所以这里有几件遗失的东西,而不是你可以做的很多事情。

第一件事是共享笔记本必须由用户(收件人)“声称”,在此期间它被分配给用户。 在声明之前,指向SharedNotebook的LinkedNotebook实际上不会让您访问底层的Notebook – authenticateToSharedNotebook将失败。

第二块是shareKey本身。 我们将您在globalId上看到shareKey的结构成员重命名为shareKeyglobalId上的sharedNotebookGlobalId sharedNotebookGlobalId命名为 – 我们正在更新开发者文档,然后我们将更新这些sdks。 要“声明”共享笔记本,收件人需要使用shareKey调用authenticateToSharedNotebook ,而不是使用globalId。 问题是,我们没有公开一种方法来生成真正的shareKey,所以第三方客户端无法生成这个并join共享笔记本。 声明之后,您可以使用globalId调用authenticateToSharedNotebook来访问笔记本。

我们添加了一个shareNotebook方法,发送电子邮件作为API调用的一部分。 该电子邮件包含一个链接,供用户点击其中包含的shareKey,并允许声明一个SharedNotebook,但目前不在SDK或文档中。 我们希望能够在这轮文档更新中得到它。