Microsoft graph api 承租人没有SPO许可证

Microsoft graph api 承租人没有SPO许可证,microsoft-graph-api,onedrive,Microsoft Graph Api,Onedrive,尝试使用Microsoft Graph编写脚本将Excel文件上载到OneDrive,然后读取Excel文件时出错 我跟随以获得无用户的访问令牌。我成功获取了访问令牌,但在使用访问令牌调用OneDrive API时出错 以下是答复: { “错误”:{ “代码”:“BADDREQUEST”, “消息”:“租户没有SPO许可证。”, “内部错误”:{ “请求id”:“5ec31d17-3EAA-469f-9078-de3608f11d0d”, “日期”:“2017-10-10T04:34:05” }

尝试使用Microsoft Graph编写脚本将Excel文件上载到OneDrive,然后读取Excel文件时出错

我跟随以获得无用户的访问令牌。我成功获取了访问令牌,但在使用访问令牌调用OneDrive API时出错

以下是答复:

{
“错误”:{
“代码”:“BADDREQUEST”,
“消息”:“租户没有SPO许可证。”,
“内部错误”:{
“请求id”:“5ec31d17-3EAA-469f-9078-de3608f11d0d”,
“日期”:“2017-10-10T04:34:05”
}
}
}
我不明白为什么调用graph API时需要SPO许可证,以及如何获得它。由于此错误消息,所以我正在尝试购买SPO许可证

根据,我认为我应该在许可证页面中看到许多产品,但在使用Azure Portal登录并转到许可证页面时,我只看到两种产品:Azure AD Premium和Enterprise Mobility Suite:

  • 在使用同一租户中的帐户登录后,您是否能够通过浏览器手动访问OneDrive内容(包括Excel文件)

  • 如果您能够手动访问驱动器和文件,请使用图形资源管理器使用相同的帐户登录并调用以获取驱动器内容。当您登录时,将显示一个同意页面,列出需要授予的权限。请记下这些权限,并检查权限是否与访问驱动器所需的权限匹配

  • 如果您还没有合适的SPO许可证,可以尝试设置免费的Office-365试用帐户()并测试API


  • OneDrive for Business和Excel API都需要Office 365。根据您的屏幕截图,这看起来像一个独立的Azure Active Directory租户(即未链接到O365)


    出现SPO许可证消息的原因是OneDrive for Business是一个特殊的SharePoint联机文档库,可自动为用户配置

    在这里回答几个问题

    背景:Microsoft Graph是许多Microsoft云服务的开发者网关或API,如Office 365、Azure Active Directory、EMS(企业移动套件)、personal Outlook、personal OneDrive等。API的使用是免费的,但要访问其背后的数据,您需要实际拥有这些服务——在某些情况下,它们可能是免费的,在其他情况下,您可能需要为它们付费

    至于将Office 365添加到现有租户中。我相信您已使用Microsoft帐户注册Azure。这意味着您已经拥有Azure Active Directory租户。您仍然可以为该租户购买/获取Office 365。您只需在租户中创建一个新的Azure AD用户(而不是Microsoft帐户),并将其设置为公司管理员。然后,您应该能够注册Office 365-如果它询问您是否已经有租户或帐户,请使用您刚刚创建的AAD帐户登录。瞧,你应该有一个Azure广告租户,订阅了Azure,现在又订阅了Office 365


    希望这有帮助,

    如果其他人也有类似问题,我在使用Office 365 Home许可证时会收到相同的错误消息。原来SPO代表SharePoint Online,您需要一个Office 365业务帐户才能拥有它。因此,据我所知,如果没有SharePoint(仅附带商业许可证),您无法使用Microsoft Graph API访问OneDrive。这在我能找到的任何地方都不清楚。

    如果其他人有类似的问题,我在使用个人Microsoft帐户时会收到相同的错误消息,就像OP一样

    因此,如果您在已注册的Azure Active Directory(AAD)应用程序中使用个人帐户,则该类型不只是
    个人Microsoft帐户
    或任何组织目录(任何Azure AD目录-Multitenant)中的
    帐户和个人Microsoft帐户(例如Skype、Xbox)
    ,您将收到此错误。此外,您需要使用正确的端点来避免错误

    主要问题是我们的帐户类型。作为个人帐户,访问一个驱动器文件有一些限制。这些限制是:

  • 您只能使用
    Oauth2代码流
    Oauth2令牌流
    。这两种方法都是交互式的。[][]
  • 在AAD中注册的应用程序只需要
    个人Microsoft帐户
    或任何组织目录(任何Azure AD目录-Multitenant)中的
    帐户和个人Microsoft帐户(例如Skype、Xbox)
    ,并且每个帐户都有不同的端点来获取访问令牌(您可以看到单击应用程序页面中“删除应用程序”按钮附近的
    端点
    按钮)。[]
  • 对在AAD中注册的应用程序启用这些委派权限:
    文件.Read
    文件.Read.All
    文件.ReadWrite
    文件.ReadWrite.All
  • 考虑到这些限制,您可以按照以下两个步骤在Postman中设置工作流(我仅使用
    个人Microsoft帐户的端点
    应用程序类型和使用
    Oauth2代码流
    ):

    重要提示:要使用代码流,您需要在Authentication ADD app侧栏菜单上的隐式授权和混合流中启用访问令牌。

  • 获取访问令牌:
  • 在您根据邮递员的请求填写信息后,我建议您使用浏览器和网络检查以Microsoft帐户登录并允许该应用。您将通过网络检查获得访问令牌

  • 列出一个驱动器根文件:
  • 在我的angular应用程序中,由于这种访问一个驱动器文件的交互方式限制,我将身份验证方法改为使用,以避免每次需要时都使用
    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
    
    https://graph.microsoft.com/v1.0/me/drive/root/children
    Add a new header:
    Authorization
    With value:
    Bearer ACCESS_TOKE_OF_STEP_1