我发出以下REST GET请求:
https://graph.microsoft.com/v1.0/me/onenote/notebooks
我收到以下回复:
{
"error": {
"code": "30108",
"message": "The OneDriveForBusiness for this user account cannot be retrieved.",
"innerError": {
"request-id": "25926552-3157-483a-bbcd-41a7105cd531",
"date": "2017-07-22T18:46:07"
}
}
}
我没有One Drive For Business帐户。我真的需要一个访问OneNote API吗?
感谢。
答案 0 :(得分:1)
是。为了使用API(访问OneNote数据),您必须拥有OneDrive(无论是个人/消费者还是商业/ Office 365) - 因为OneNote云数据实际存储在OneDrive / SharePoint中。如果您有Office 365帐户,可以尝试转到https://portal.office.com,然后单击左侧" waffle"按钮,然后单击OneDrive,它将创建您自己的个人OneDrive for Business。
请查看https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/onenote了解详情。
此外,如果您只是尝试使用API,则可以使用Graph Explorer。它有一些您可以尝试的保存/示例查询。 (在“样本查询”下,单击“显示更多样本”并切换 OneNote 开关。)
希望这有帮助,
答案 1 :(得分:0)
这里我是如何通过切换到使用Microsoft帐户进行身份验证并使用经典的OneNote Rest API在Azure功能中解决的。
var request = require('request');
module.exports = function (context, req) {
var microsoftAccountAccessToken = req.headers['x-ms-token-microsoftaccount-access-token'];
context.log( "Microsoft Account Access Token: " + microsoftAccountAccessToken );
request(
{
url: 'https://www.onenote.com/api/v1.0/me/notes/notebooks',
method: "GET",
headers: {
'Authorization': 'Bearer ' + microsoftAccountAccessToken
},
},
function( error, response, body )
{
if (!error && response.statusCode === 200) {
context.log(body);
context.res = {
body: body
};
context.done();
}
else {
context.log("error: " + error)
context.log("response.statusCode: " + response.statusCode)
context.log("response.statusText: " + response.statusText)
context.res = {
body: response.statusText
};
context.done();
}
}
);
};
答案 2 :(得分:0)
https://docs.microsoft.com/en-us/graph/onenote-error-codes#30108
无法检索用户的个人OneDrive for Business。下表列出了一些可能的原因。
答案 3 :(得分:0)
我尝试了很多方法,最后我使用了这里提到的方法:https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/how-to/onenote-auth
身份验证服务器为login.live.com,以上页面提供了两种方法:代码和令牌。两者都可以使用。进行身份验证并获得令牌后,我可以使用该令牌调用Graph API。
代码方法更易于演示。首先,在浏览器中打开它:
https://login.live.com/oauth20_authorize.srf
?response_type=token
&client_id={client_id}
&redirect_uri={redirect_uri}
&scope={scope}
然后,登录帐户后,它将回调。只需将access_token复制到回调URL中。做:
GET https://graph.microsoft.com/v1.0/me/onenote/pages
Accept: application/json
Authorization: Bearer {access_token}
可以检索页面而不会出现30108错误。这些是简单的测试步骤。我用Java实现,可以通过Microsoft的图形库(com.microsoft.graph:microsoft-graph:1.5。+)获取OneNote数据。如下:
IOnenotePageCollectionPage pages = graphClient.me().onenote().pages().buildRequest().get();
graphClient是IGraphServiceClient。但是我通过login.live.com实现了身份验证提供程序。