Ken*_*ham 12 onedrive microsoft-graph-api
我在尝试使用 Microsoft Graph 编写脚本以将 Excel 文件上传到 OneDrive 然后读取 Excel 文件时出错。
我按照Microsoft 文档在没有用户的情况下获取访问令牌。我成功获得了访问令牌,但在使用访问令牌调用 OneDrive API 时出错。
这是回应:
{
"error": {
"code": "BadRequest",
"message": "Tenant does not have a SPO license.",
"innerError": {
"request-id": "5ec31d17-3aea-469f-9078-de3608f11d0d",
"date": "2017-10-10T04:34:05"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在调用图形 API 时需要拥有 SPO 许可证以及如何获取它。由于此错误消息,所以我正在尝试购买 SPO 许可证。
根据此文档,我认为我应该在许可证页面中看到许多产品,但是在使用 Azure 门户登录并转到许可证页面时,我只看到 2 个产品:Azure AD Premium 和 Enterprise Mobility Suite:

Kik*_*uto 14
如果其他人也有类似的问题,我在使用个人 Microsoft 帐户时会收到相同的错误消息,就像 OP 一样。
因此,如果您在注册的 Azure Active Directory (AAD) 应用程序中使用个人帐户,则该类型不是Personal Microsoft accounts only,否则Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g., Skype, Xbox)您将收到此错误。此外,您需要使用正确的端点以避免错误。
主要问题是我们的帐户类型。作为个人帐户,访问一个驱动器文件有一些限制。这些限制是:
Oauth2 Code Flow或Oauth2 Token Flow。两者都是交互式方法。[ 1 ][ 2 ]Personal Microsoft accounts only或Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)每个都有不同的端点来获取访问令牌(您可以看到单击endpoint应用程序页面中删除应用程序按钮附近的按钮)。[ 3 ]Files.Read、Files.Read.All、Files.ReadWrite和Files.ReadWrite.All。考虑到这些限制,您可以按照以下两个步骤在 Postman 中设置工作流程(我使用Personal Microsoft accounts only应用程序类型的端点并使用Oauth2 Code Flow):
Important note: To use code flow, you need to enable Access tokens in Implicit grant and hybrid flows on Authentication ADD app sidebar menu.
https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize?client_id=YOUR_CLIENT_ID&response_type=token&redirect_uri=ONE_OF_REGISTERED_REDIRECT_URI&scope=Files.Read Files.Read.All Files.ReadWrite Files.ReadWrite.All
Run Code Online (Sandbox Code Playgroud)
根据 Postman 的要求填写信息后,我建议使用浏览器和网络检查来使用 Microsoft 帐户登录并允许该应用程序。您将通过网络检查获取访问令牌。
https://graph.microsoft.com/v1.0/me/drive/root/children
Add a new header:
Authorization
With value:
Bearer ACCESS_TOKE_OF_STEP_1
Run Code Online (Sandbox Code Playgroud)
在我的角度应用程序中,由于这种访问一个驱动器文件的交互方式受到限制,我将身份验证方法更改为使用Microsoft 身份验证库(MSAL),以避免每次需要发送 API 请求时打开弹出窗口来验证有效的 Microsoft帐户。
cri*_*uin 13
万一其他人遇到类似问题,我在使用 Office 365 家庭版许可证时收到相同的错误消息。事实证明,SPO 代表 SharePoint Online,您需要一个 Office 365 商业版帐户才能拥有它。因此,据我所知,如果没有 SharePoint(仅随营业执照提供),您就无法使用 Microsoft Graph API 访问 OneDrive。这在我能找到的任何地方都没有说清楚。
Dan*_*SFT 10
在这里回答几件事。
背景:Microsoft Graph 是许多 Microsoft 云服务(如 Office 365、Azure Active Directory、EMS(企业移动套件)、个人 Outlook、个人 OneDrive 等)的开发人员网关或 API。API 的使用是免费的,但要访问其背后的数据,您需要实际拥有这些服务 - 在某些情况下它们可能是免费的,而在其他情况下您可能需要为它们付费。
至于将 Office 365 添加到现有租户。我相信您已经使用 Microsoft 帐户注册了 Azure。这意味着你已经拥有 Azure Active Directory 租户。您仍然可以为该租户购买/获取 Office 365。您需要做的就是在您的租户中创建一个新的 Azure AD 用户(不是 Microsoft 帐户),并使他们成为公司管理员。然后您应该能够注册 Office 365 - 如果它询问您是否已经有租户或帐户,请使用您刚刚创建的 AAD 帐户登录。瞧,你应该有一个 Azure AD 租户,订阅了 Azure,现在订阅了 Office 365。
希望这可以帮助,
| 归档时间: |
|
| 查看次数: |
11705 次 |
| 最近记录: |