从 MS Graph API 获取联系人时找不到资源

2024-04-28

我尝试了下面的 github 示例进行 Azure AD 身份验证,并成功通过正确的回调 URL 获取访问令牌。

https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/18.bot-authentication https://jwt.ms

根据我创建的应用程序修改和配置 Web.config 键https://apps.dev.microsoft.com https://apps.dev.microsoft.com

  <add key="ActiveDirectory.Mode" value="v1" />
<add key="ActiveDirectory.ResourceId" value="https://graph.microsoft.com" />
<add key="ActiveDirectory.EndpointUrl" value="https://login.microsoftonline.com" />
<add key="ActiveDirectory.Tenant" value="xyz-xyz" />
<add key="ActiveDirectory.ClientId" value="xyz-xyz" />
<add key="ActiveDirectory.ClientSecret" value="xyz-xyz" />
 <add key="ActiveDirectory.RedirectUrl" value="http://localhost:3979/api/Callback" />
<add key="ActiveDirectory.Scopes" value="Calendars.Read,Calendars.ReadWrite,Contacts.Read,Contacts.ReadWrite,Mail.Read,Mail.ReadWrite,User.Read" />

我已经核对了收到的访问令牌jwt.ms https://jwt.ms。它是一个有效的令牌,其范围定义与我在 web.config 中定义的完全相同。

我可以通过传递令牌从 API 获取用户个人资料数据,但在尝试调用用户的“联系人”时,出现以下错误。

{
"error": {
    "code": "ResourceNotFound",
    "message": "Resource could not be discovered.",
    "innerError": {
        "request-id": "6f0f3ec9-76c9-4662-ac25-0bc73f887268",
        "date": "2019-03-02T17:23:35"
    }
}

}

代码调用Contact API调用。

   //Get Logged in user contacts
    public async Task<IUserContactsCollectionPage> GetMyContactsAsync()
    {
        var graphClient = GetAuthenticatedClient();
        IUserContactsCollectionPage contacts = await graphClient.Me.Contacts.Request().GetAsync();
        return contacts;
    }

仅供参考:模拟器中显示的登录卡授权示例 URL 如下所示

https://login.microsoftonline.com/a76b43b0-3088-4c56-ba0d-01f317b1f18c/oauth2/authorize?resource=https:%2F%2Fgraph.microsoft.com&client_id=XYZ&response_type=code&haschrome=1&redirect_uri=http:%2F%2Flocalhost:3979%2Fapi%2FCallback&x-client-SKU=PCL.Desktop&x-client-Ver=3.13.9.1126&x-client-CPU=x64&x-client-OS=Microsoft+Windows+NT+10.0.16299.0&state=<stateID>

发生这种情况的原因有很多;最常见的问题之一是需要向您注册的应用程序授予权限。确保您已完成以下步骤。

Step 1:

登录您的门户并在应用程序注册下选择您的应用程序。然后点击设置查看下面的屏幕截图:

Step 2:

单击“设置”后,右侧将出现一个新窗口,单击“所需权限”菜单。请参阅下面的屏幕截图:

Step 3:

选择所需权限菜单并通过单击添加按钮分配您的权限。请参阅下面的快照:

Step 4:

单击选择 API 选项,如下所示:

最后一步:

选择您所需的 API,然后检查您想要访问哪个 API。完成权限后,单击“完成”。执行此步骤后,您可以从应用程序访问所需的资源/范围。请参阅下面的屏幕截图:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 MS Graph API 获取联系人时找不到资源 的相关文章

随机推荐

  • 有没有一种简单的方法可以将我的苹果应用程序转换为安卓应用程序?

    我是一名应用程序开发人员 我使用 Xcode 来开发我的所有应用程序 但看到当今市场上很多人都拥有非苹果设备 所以我想我想知道是否有一种简单的方法可以将我的苹果应用程序代码转换为Android格式 以便我可以提交到两个市场 Android
  • 在 systemd 服务文件内/内联添加 shell 命令

    我正在运行gunicorn通过 systemd 将服务器作为服务 这是示例service file Unit Description Gunicorn NGINX After network target Service User root
  • Curl下载到HDFS

    我有这个代码 curl o fileName csv url xargs hdfs dfs moveFromLocal 1 somePath 当我执行此代码时 curl 将请求中的值放入 fileName csv 中 该文件将移动到 HDF
  • 如何在小部件中使用列表视图? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试创建一个从 rss feed 加载到小部件中的列表视图 有谁知道如何在小部件中使用列表视图的教
  • 学习 BDD、TDD(ruby、C#、javascript)的好资源

    学习 BDD 和 TDD ruby C javascript 有哪些好的资源 现在用什么好的框架 See 为什么我应该练习测试驱动开发以及应该如何开始 https stackoverflow com questions 4303 why s
  • 使用VBA抓取实时数据

    我想从中抓取实时数据https iboard ssi com vn bang gia hose https iboard ssi com vn bang gia hose使用VBA 我的代码如下 但它不会返回其中包含数据的 html 文件
  • 什么是依赖注入的 Pythonic 方式?

    介绍 对于 Java 依赖注入作为纯 OOP 工作 即您提供要实现的接口 并在框架代码中接受实现定义的接口的类的实例 现在对于 Python 您可以执行相同的操作 但我认为该方法对于 Python 而言开销太大 那么如何以 Pythonic
  • Swashbuckle IDocumentFilter 实现 - 如何将 ActionDescriptor.MethodInfo 链接到操作

    项目 ASP Net Core 2 2 Web API 软件包 Swashbuckle AspNetCore 4 0 1 我正在写一个实现Swashbuckle AspNetCore SwaggerGen IDocumentFilter它在
  • 缓慢的 data.frame 行分配

    我正在使用 RMongoDB 需要用查询的值填充空的 data frame 结果相当长 大约有 200 万个文档 行 当我进行性能测试时 我发现将值写入行的时间随着数据帧的维度的增加而增加 也许这是一个众所周知的问题 而我是最后一个注意到它
  • 当元素被覆盖时取消 mouseout 事件

    希望这个 JSFiddle 能比我的话更好地说明这个问题 http jsfiddle net pmwRc 6 http jsfiddle net pmwRc 6 当地图悬停时 我在图像地图上显示绝对定位的 H4 作为标签 但是 当鼠标指针移
  • $.fn.function 的调用函数

    问题如下 有一个函数自定义 jquery 函数 里面有另一个函数 例如 fn slides function args function foo args 我现在的问题是 我如何调用方法 foo foo不是一种方法 这是一个本地函数 除非您
  • 字符串等于和 == 与字符串连接[重复]

    这个问题在这里已经有答案了 我试图理解字符串连接与字符串比较的输出 需要明确的是 我有一个类使用 和 equals 来比较两个字符串 我试图将 和 equals 的输出连接到一个字符串 equals 的输出是 concats 但是 的输出是
  • Android Fragment onCreateView 与 onActivityCreated

    我知道片段的视图层次结构必须在 onCreateView 中膨胀 但是 onCreateView 中还可以包含哪些其他功能 而不是应该等待 onActivityCreated 我当前的实现对所有内容都使用单独的活动 典型的活动在其 onCr
  • PHP 路由 - 样式表无效

    我用 PHP 创建了一个基本的路由系统 url 被分割成一个数组 这样我就可以根据 URL 决定显示什么 例如 www domain com page option param 因此 在我的index php 中 我为页眉 内容和页脚定义了
  • 如何在触摸时旋转图像并将图像拖动到另一个图像上

    我正在开发一个应用程序 我需要一个包含许多图像的图库 我想要做的是 当用户点击 单击任何图像时 它应该将该图像旋转到 90 度 如果用户将任何图像拖动到任何其他图像的顶部 那么这些图像应该交换它们的位置 或者我们可以说交换 彼此的位置 解释
  • UITableView:使用 moveRowAtIndexPath:toIndexPath: 和 reloadRowsAtIndexPaths:withRowAnimation: 一起出现损坏

    我想使用 iOS 5 漂亮的行移动调用来为表格视图设置动画以匹配某些模型状态更改 而不是旧式的删除和插入 更改可能包括重新排序和就地更新 并且我想对两者进行动画处理 因此某些行需要reloadRowsAtIndexPaths But UIT
  • 在 Python/Pandas 中执行不同操作的许多列上有条件地聚合分组数据

    考虑以下简化的示例数据帧df Department CustomerID Date Price MenswearDemand HomeDemand 0 Menswear 418089 2019 04 18 199 199 0 1 Mensw
  • React 测试库:测试属性/prop

    我正在使用 TypeScript 编写一个 React 应用程序 我使用material ui作为我的组件 使用react testing library作为我的单元测试 我正在为 Material ui 的 Grid 组件编写一个包装器
  • PhantomJs超时

    我使用 Jasmine 和 PhantomJS 来运行测试用例 在我的典型测试用例中 我拨打服务电话 等待响应并确认响应 有些请求可能会在几秒钟内返回 有些请求可能需要一分钟才能返回 当通过 PhantomJS 运行时 测试用例因服务调用而
  • 从 MS Graph API 获取联系人时找不到资源

    我尝试了下面的 github 示例进行 Azure AD 身份验证 并成功通过正确的回调 URL 获取访问令牌 https github com Microsoft BotBuilder Samples tree master sample