小编bap*_*rks的帖子

图 API:令牌中需要存在 scp 或角色声明

我正在尝试使用 MS Graph API 从 OneDrive for Business 获取文件/文件夹列表。我已经在 Graph Explorer 中成功执行了我需要的查询,现在正在我的项目中实施。

我的应用程序是 Windows 服务,因此我使用此方法获取令牌

我已成功检索到令牌,但是当我“获取”此 URL 时... //graph.microsoft.com/v1.0/users('someuseraccount')/drive/items/somedriveitem/microsoft.graph.createLink

...我收到错误回复:

令牌中需要存在 scp 或角色声明。

我来自服务器的令牌响应如下:

{
  "token_type": "Bearer",
  "expires_in": "3600",
  "scope": "Directory.AccessAsUser.All Files.Read Files.Read.Selected Files.ReadWrite Files.ReadWrite.AppFolder Files.ReadWrite.Selected profile Sites.Read.All User.Read",
  "expires_on": "1457343736",
  "not_before": "1457339836",
  "resource": "https://graph.microsoft.com",
  "access_token": "-the token-"
}
Run Code Online (Sandbox Code Playgroud)

onedrive azure-ad-graph-api microsoft-graph-api

9
推荐指数
1
解决办法
1万
查看次数

MS Graph API:microsoft.graph.createLink不创建匿名视图链接

我正在使用图形API遍历OneDrive for Business中的文件夹。我正在尝试使用以下调用为文件夹中的每个项目生成“匿名视图”链接:

/v1.0/users('user-guid')/drive/items/item-id/microsoft.graph.createLink

与身体:

{
   "type": "view",
   "scope": "anonymous"
}
Run Code Online (Sandbox Code Playgroud)

对于已通过OneDrive UI授予“查看链接-无需登录”权限的项目,此方法正确运行。但是,对尚未设置此共享选项的项目执行此调用将导致以下返回消息:

{
  "error": {
    "code": "unauthenticated",
    "message": "The caller is not authenticated.",
    "innerError": {
    "request-id": "1c3600ec-4861-4be4-9a7b-74264f488a80",
    "date": "2016-03-13T02:30:10"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是身份验证问题,因为我的令牌可用于所有其他调用(以及针对已设置了文件共享集的项目的调用)。我从Microsoft Graph Explorer工具得到相同的行为。如果我在OneDrive中手动设置了“查看链接-无需登录”权限,则此调用将完美执行。我用于API调用的凭据与我用来在OneDrive UI中设置权限的凭据相同。

microsoft.graph.createLink的文档指出

如果指定的链接类型尚不存在,则createLink方法将创建一个新的共享链接。如果应用程序已存在指定类型的共享链接,则将返回现有的共享链接。

任何想法出什么事了吗?

onedrive microsoft-graph

5
推荐指数
1
解决办法
558
查看次数

MS Graph API:找不到 OneDrive 资源

我正在构建一个 Windows 服务,使用以下方法通过 Graph API 连接到 OneDrive for Business: https: //graph.microsoft.io/en-us/docs/authorization/app_only

我已成功验证了我的应用程序,并拥有用于调用 Graph API 的令牌。我已向 Windows Azure Active Directory 和 Microsoft Graph 授予我的 Azure AD 应用程序权限(已为两者选择了所有应用程序和委派权限)。

我的目标是获取驻留在特定用户 OneDrive 中的文件夹的内容。我需要进行以下图形 API 调用:

//graph.microsoft.com/v1.0/users('user-guid')/drive/items/long-item-id-here/children
Run Code Online (Sandbox Code Playgroud)

我可以使用 Microsoft Graph Explorer(使用我的 Office 365 凭据登录)成功执行此请求。当我尝试进行与应用程序相同的调用(使用上面收到的身份验证令牌)时,我收到“itemNotFound”代码,其中包含消息“找不到资源”。(请求 ID:5e814dce-c4c2-4615-90e6-ea8ab90cbc49)。但是,我可以查询根目录,并且“folder.childCount”属性显示根目录中正确的子级数量:

//graph.microsoft.com/v1.0/users('user-guid')/drive/root
Run Code Online (Sandbox Code Playgroud)

我已将文件夹的共享设置为“所有经过身份验证的用户”,但我仍然从 API 调用中收到“找不到资源”。

关于我在这里缺少什么有什么想法吗?

onedrive microsoft-graph-api

4
推荐指数
1
解决办法
5685
查看次数