使用Office 365邮件api的Powershell脚本不再起作用

时间:2019-01-09 22:49:36

标签: powershell outlook outlook-api

我们有一个Powershell脚本,它将从Outlook Office 365中的共享邮箱中抓取附件。现在,邮件api v1不再支持基本身份验证,该脚本昨晚已停止工作,现在我需要使用oAuth?

说实话,我不知道如何进行此切换,并且已经阅读了几次文档,但是我认为我现在更加迷失了。从我继续阅读的所有内容中可以看出,我需要立即构建一个应用程序,注册该应用程序,然后通过命中该应用程序的端点生成承载或访问令牌?是真的,我真的需要做所有这一切吗?

我可以用Microsoft帐户生成api令牌吗?

这实际上是我们使用的脚本:https://gallery.technet.microsoft.com/office/O365-Email-Attachments-to-6a45e84c

1 个答案:

答案 0 :(得分:0)

我们处于同样的情况。可能是由于outlook.office365.com REST Api已关闭,并且Graph API从现在开始是默认的: How to retrieve contents of an itemAttachment via the Microsoft Graph API https://docs.microsoft.com/nl-be/graph/api/attachment-get?view=graph-rest-1.0#request-2

现在,我整理了一个脚本来正确执行此操作,并且该脚本可以正常工作。但是(1)每次脚本启动时(例如断电后),都需要GUI输入密码,并且一旦登录(2),访问令牌就会一直过期...

Invoke-RestMethod : {
  "error": {
    "code": "InvalidAuthenticationToken",
    "message": "Access token has expired.",
    "innerError": {
      "request-id": "1c991403-ab46-4aec-a7a1-316dbdfb4eb8",
      "date": "2019-01-16T12:29:50"
    }
  }
}

现在,当您进入文档并开始阅读诸如刷新令牌之类的内容时,...简直就是疯了! https://docs.microsoft.com/nl-be/graph/auth-v2-user

我已经为MailChimp开发了API接口,并在不到一个小时的时间内完成了...(1)在MailChimp中生成API密钥,(2)在您的脚本中使用该API密钥,并在需要时(3)撤消MailChimp中的Key紧急情况(完成)。

这个象征性的M $ BS真是令人震惊。据我了解,您必须使用admin PowerShell工具将令牌更改为90天的默认持续时间(但据我了解,服务器范围而不是应用程序范围?),或者每隔5分钟自动刷新脚本中的访问令牌。< / p>

这就是为什么我现在正在考虑使用PSMSGraph来为您完成所有这些工作的原因:https://psmsgraph.readthedocs.io/en/latest/

如果您希望它在我之前能正常工作,请分享您的代码。由于我当前的解决方案需要手动输入密码(我看不到如何使它变得毫无头绪),并且由于令牌过期而在一个小时后停止工作。

我确定使用这种访​​问令牌的方式确实有很好的(安全性)理由,但是如果使用MailChimp生成生存期令牌的方式只是可行的话……那么我不明白为什么这种访问令牌会变得复杂首先需要使用Microsoft Graph API。