Microsoft graph api “错误”;无法检索此用户帐户的OneDriveForBusiness。”;使用Graph API访问Microsoft OneNote时
我提出以下REST GET请求:Microsoft graph api “错误”;无法检索此用户帐户的OneDriveForBusiness。”;使用Graph API访问Microsoft OneNote时,microsoft-graph-api,Microsoft Graph Api,我提出以下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": { "re
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"
}
}
}
我没有一个单驱动器的商业帐户。我真的需要一个才能访问OneNote API吗
谢谢。是的。为了使用API(访问OneNote数据),您必须拥有OneDrive(无论是个人/消费者还是企业/Office 365),因为OneNote云数据实际上存储在OneDrive/SharePoint中。如果您有Office 365帐户,您可以尝试转到,然后单击左侧的“华夫格”按钮,然后单击OneDrive,这将创建您自己的个人OneDrive for Business 有关更多详细信息,请查看 另外,如果您只是在尝试API,那么您可以使用它。它有一些保存/示例查询,您可以尝试。(在“示例查询”下,单击“显示更多示例”并切换OneNote开关)
希望这能有所帮助,这里是我如何通过切换到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();
}
}
);
};
无法检索用户的个人OneDrive for Business。下表列出了一些可能的原因
我尝试了很多方法,最后我使用了这里提到的方法: 身份验证服务器是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}
然后,在登录帐户后,它将回调。只需在回调URL中复制access_令牌。做:
GET https://graph.microsoft.com/v1.0/me/onenote/pages
Accept: application/json
Authorization: Bearer {access_token}
检索页面时不会出现30108错误。这些是简单的测试步骤。我用Java实现,可以通过Microsoft的图形库(com.Microsoft.Graph:MicrosoftGraph:1.5.+)获取OneNote数据。详情如下:
IOnenotePageCollectionPage pages = graphClient.me().onenote().pages().buildRequest().get();
graphClient是IGraphServiceClient。但是我通过login.live.com实现了身份验证提供程序。谢谢您的提示。奇怪的是,我使用我的个人帐户,这有一个包含我笔记本的OneDrive。为了获取访问令牌,我使用了一个配置为“使用Azure Active Directory登录”的Azure函数。也许这不适用于个人帐户。当我使用我的个人帐户登录到图形浏览器并访问OneNote Rest API时,我只会得到“未知错误”。这就是你的问题所在。如果你想访问你的个人/消费者OneDrive,你需要使用你的Microsoft帐户(而不是Azure AD帐户)登录。我不知道Azure功能是否支持这一点(可能-我只是不知道)。要使用Microsoft帐户登录并调用Microsoft Graph,您需要使用v2授权和令牌端点获取访问令牌。有关详细信息,请参阅此主题:注册您的应用程序并代表用户获取访问令牌。