使用 Exchange 服务和 OAuth 订阅推送通知时出现 401 未经授权

2023-12-08

我正在尝试使用 oauth 访问 EWS 托管 API(订阅推送通知),如下所示:

var authenticationTask = await authenticationContext.AcquireTokenAsync("https://outlook.office365.com", new ClientCredential(clientID, clientSecret));
string targetSmtp = "[email protected]";
ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2013);
exchangeService.Url = someURL;
exchangeService.TraceEnabled = true;
exchangeService.TraceFlags = TraceFlags.All;
exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.PrincipalName, "[email protected]");
exchangeService.HttpHeaders.Add("X-AnchorMailbox", targetSmtp);
exchangeService.Credentials = new OAuthCredentials(authenticationTask.AccessToken);
PushSubscription subscription = exchangeService.SubscribeToPushNotifications(
                                            new[] { someFolder },
                                            new Uri(postBackUrl),
                                            15,
                                            null,
                                            EventType.NewMail,
                                            EventType.Created,
                                            EventType.Deleted,
                                            EventType.Modified,
                                            EventType.Moved,
                                            EventType.Copied);

我能够获取我的应用程序的令牌,但在订阅用户时([电子邮件受保护])对于我收到的推送通知"The request failed. The remote server returned an error: (401) Unauthorized." error

更新:尝试遵循此处提到的完全相同的步骤:用于交换模拟的仅限 Azure AD 应用程序的访问令牌但仍然得到401。

Ashish


对于那些遇到同样问题的人,我们需要使用证书(而不是使用客户端密钥)来获取已注册应用程序的访问令牌。有关如何操作的更多详细信息,请参阅:https://blogs.msdn.microsoft.com/exchangedev/2015/01/21/building-daemon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-凭证流/

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

使用 Exchange 服务和 OAuth 订阅推送通知时出现 401 未经授权 的相关文章

  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • IronPython:没有名为 json 的模块

    我安装了 IronPython 我的 python 文件如下所示 import sys print sys version import json 运行它的代码 var p Python CreateEngine var scope p C
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 剪贴板在 .NET 3.5 和 4 中的行为有所不同,但为什么呢?

    我们最近将一个非常大的项目从 NET Framework 3 5 升级到 4 最初一切似乎都工作正常 但现在复制粘贴操作开始出现错误 我已经成功制作了一个小型的可复制应用程序 它显示了 NET 3 5 和 4 中的不同行为 我还找到了一种解
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder

随机推荐

  • FasterCSV:几个分隔符

    我的 Rails3 应用程序解析用户上传的 CSV 文件 正如预期的那样 用户上传制表符分隔和逗号分隔的文件 我想两者都支持 My code input CSV read uploaded io tempfile encoding UTF
  • 输入文本区域和输出文本区域并保存到

    我编写了一个快速 hta 以便通过按钮进行快速操作 复制到剪贴板 消息框并运行特定文件 现在我正在尝试弄清楚如何添加 2个文本框 TextArea1 在里面输入文本 提交按钮将textarea1保存到本地文件并加载到textarea2 Te
  • 有条件地设置 pandas 数据框列值

    这个问题与下面的请求完全相同 但又多了一个转折 Pandas 替换数据框中的列值 pandas 数据框列中值的条件替换 所以 我想设置或有条件地设置 pandas 数据框列值 增加的复杂性是 不是使用字符串常量来寻址数据帧列 df data
  • 在不同的工作簿中捕捉事件

    我想知道是否可以在另一个工作簿中捕捉事件 宏将打开一个工作簿供用户使用 我希望能够在其选择更改事件上运行另一个宏 不可以 代码不能存储在刚刚打开的工作簿中 除了以编程方式将代码添加到打开的工作簿中之外 还有其他方法吗 ThisWorkboo
  • 从表行发布数据,如 json 格式

    这与我上次有关question 注意 我已经在那里得到了一些很好的答案 我正在做一个可以过滤的程序 我没有包含这个问题 因为我认为只要我知道如何从行中获取数据 添加文本就更容易 但令我沮丧的是 到目前为止我还无法编写出一个好的程序 我目前使
  • 如何组合对一个函数的多次调用?

    我想概括我的函数调用 以便能够将这些调用作为参数传递给第二个函数 就我而言 我有多个 ggplots 我将其存储为列表 例如 year plots lt lapply c 2008 2009 2010 2011 2012 2013 2014
  • 将类静态成员定义放入 cpp 文件 - 技术限制?

    当用 C 编码时 我 最喜欢 的烦恼之一是在我的类中声明一些静态变量 然后查看有关未解析的静态变量的编译错误 在早期 我总是害怕它意味着什么 我的意思是经典的例子 比如 Test h class Test private static in
  • 从代码后面添加文本框服务器控件?

    我正在尝试从代码隐藏添加一个新的文本框服务器控件到我的页面 TextBox txt new TextBox txt Width 100 txt Height 100 Page Controls Add txt 当我编写以下代码时 会引发此错
  • 无法在 PHP 中刷新 OAuth2 令牌,授权无效

    我需要制作一个 PHP 脚本来在 Google 日历上创建单个事件 我在设置客户端 ID 客户端密码 开发密钥和创建新事件时没有遇到任何问题 我唯一的问题是 OAuth2 特别是我需要建立永久连接 并且我不想每次运行脚本时都进行身份验证 实
  • 正则表达式 \b 字边界不起作用

    在Android中我有下一个正则表达式 b id b 在这个查询中 即 我想完全替换单词 id SELECT schedules id as idreal FROM schedules WHERE schedules id 12 最终查询
  • 如何使标题框的宽度跨越整个绘图?

    考虑以下 pandas 系列s和情节 import pandas as pd import numpy as np s pd Series np random lognormal 001 01 100 ax s cumprod plot a
  • 在java中更新文本文件的特定部分

    在我的程序中 每次用户提款时 我都需要更新文本文件的 余额 列 我使用了 write 方法和追加方法 但没有效果 用户登录后 该特定行将存储在数组中 PIN AccountNo Balance 1598 01 10 102203 0 950
  • 将多个列表映射到字典

    我有 5 个列表 我想将它们映射到分层字典 假设我有 temp 25 25 25 25 volt 3 8 3 8 3 8 3 8 chan 1 1 6 6 rate 12 14 12 14 power 13 2 15 3 13 8 15 1
  • Mule ESB - 如何使用 POST 方法创建 HTTP 请求(一起发送参数)

    简而言之 我想使用 POST 方法将几个参数 例如 user admin key 12345678 发布到 PHP 页面 例如 localhost post debug php 该脚本将读取 POST 值并执行任何操作 我的问题是 1 如何
  • strtotime 的正确输入值

    我想通过以下语句转换日期 date date d M Y H m strtotime date 打印出来了09 Sep 2012 11 09当我尝试 date 的各种值时 11 00 AM Sunday 09 Sep 2012 Sunday
  • Android Phonegap Compilations 在应用程序底部添加了不应该存在的栏?

    我到处寻找并尝试了几乎所有方法 但我无法摆脱出现在 PhoneGap 应用程序底部的随机黑条 这是我运行应用程序时看到的内容 有趣的是 如果我最小化应用程序然后再次打开它 它会自动修复显示并且底部栏消失 但为什么 如何让它从应用程序打开的那
  • 将第一个 div 向左对齐,随后的 div 向右对齐

    我希望在同一水平线上显示三段文本 如下所示 Chapter one Language English 我在用 代表窗口的最左边或最右边 这就是我现在所拥有的 div div Chapter one div div Language div
  • 使用 VBScript 更改快捷方式中的目标

    我正在尝试创建 VBScript 来更改链接中的目标 目前的目标是 C Program Files Hyland Application Enabler AEClient exe 我希望新的目标是 C Program Files Hylan
  • 自定义任务运行程序方法抛出 ArgumentException

    由于 CultureInfo 没有从一个线程复制到另一个线程 所以我制定了以下方法来为我做这件事 public static StartCustomTask Action action TaskCreationOptions tco Tas
  • 使用 Exchange 服务和 OAuth 订阅推送通知时出现 401 未经授权

    我正在尝试使用 oauth 访问 EWS 托管 API 订阅推送通知 如下所示 var authenticationTask await authenticationContext AcquireTokenAsync https outlo