当前位置: 首页 > 知识库问答 >
问题:

Microsoft Graph使用客户端凭据流(应用程序权限)和个人帐户发送邮件

杭永安
2023-03-14

我正在学习Microsoft Graph,为此我使用Graph Explorer和Postman。

使用图形资源管理器:我已使用个人用户帐户(hotmail)登录。我一接通,就能看到令牌。奇怪的是,当我在jwt.io中复制/粘贴这个令牌时,它不能被解码。然而,我可以执行类似https://graph.microsoft.com/v1.0/me的查询,它返回我自己作为用户的一些信息(使用http 200)。或者查询https://graph.microsoft.com/v1.0/me/sendmail,它允许我发送测试和接收测试邮件(使用http 202)。所有这些请求都是“委托权限”。因此我在个人帐户(hotmail)中使用图形资源管理器没有任何问题。

带邮递员:这次我将用“应用程序权限”执行一些测试。我遵循了以下步骤:

步骤5:在邮递员中获取令牌

>

  • POST

    • https://login.microsoftonline.com/{my-tenant-id-here}/oauth2/v2.0/token
      null
      null

    第六步:查询是否列出所有用户

    >

  • 获取

    • https://graph.microsoft.com/v1.0/users
      null
      null
      null
    • 承载令牌:{bearer-token-received-previous}
    • 内容类型:application/json
    {
      "message": {
        "subject": "This is my subject",
        "body": {
          "contentType": "Text",
          "content": "This is my content"
        },
        "toRecipients": [
          {
            "emailAddress": {
              "address": "thierry.langie@skynet.be"
            }
          }
        ],
        "ccRecipients": [
        ]
      },
      "saveToSentItems": "false"
     }
    
    • 不确定错误:MailboxNotEnabledForRESTAPI-此邮箱尚不支持REST API

    作为附带说明,我知道有一些库可以方便过程并避免使用REST API调用(URL),但我认为这并不能解释我面临的问题。

  • 共有1个答案

    芮安顺
    2023-03-14

    “MailboxNoteNabledForRestAPI-此邮箱尚未支持REST API”此错误消息表示用于发送电子邮件的电子邮件帐户没有Exchange Online许可证。

    对于个人帐户,您应该使用委托权限,您已经在Microsoft Graph Explorer中尝试过该权限。请参阅此处的权限。

    如果我们将个人账户作为来宾用户添加到您的租户中,虽然我们可以为来宾用户分配许可证(我假设我们可以为来宾用户分配EXO许可证),但托管在EXO中的邮箱与个人账户的邮箱是不同的。它们完全是2个分开的邮箱。事实上我没能把EXO执照分配给客人。

    虽然您的个人帐户作为来宾用户添加到租户中,但它没有EXO许可证(根据测试,我们无法分配EXO许可证给它),所以它不会托管在O365中。

    这就是为什么我们不能使用客户凭据流量与个人帐户。

     类似资料:
    • 我正在使用outlook Mail REST API(https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/API/version-2.0/mail-rest-operations)编写一个守护程序应用程序来管理我的个人microsoft outlook帐户。为此,我必须生成适当的授权令牌,以便与API调用

    • 我正在尝试在 Go 应用引擎部署上使用具有域范围委派 (DwD) 的服务帐户。 我已按照使用 Google 应用程序默认凭据的步骤将服务帐户与应用引擎配合使用。 我让代码在我的开发计算机上本地运行,但我被困在从我的域中检索实际数据。 我用的是Admin SDK。在“向您的服务帐户授予域范围的权限”一节中,它说我的“服务帐户需要模拟其中一个用户来访问Admin SDK Directory API”。

    • 问题内容: 我正在尝试了解和实现新的REST服务器与现有的客户端应用程序之间的客户端凭证流。我已经像这样设置了spring-security OAuth2 。从到目前为止的理解来看,我的服务器现在应该支持以下请求: 但我明白了 由引起的是这里(弹簧安全码): 看来,我需要首先 针对服务器 进行 身份验证 。但这 不是我想做的 。我希望我的两个服务器使用共享密钥相互通信。OAuth提供者服务器应应请

    • 我试图实现一个简单的客户端凭证流spring-security-oauth2 api。我试图改编sparklr和tonr的例子,但没有成功。我也尝试按照这个线程的代码:Spring-2-leged(客户端凭证)OAuth2服务器的安全上下文设置,但它似乎不适合我。谁能给我举个例子,或者帮我做些什么来让这个工作。 spring servlet。Sparkr应用程序中的xml Spring式.xml在

    • 我正在尝试从应用程序发送电子邮件。 问题是Gmail不允许我进行身份验证,因为位置不寻常——当然,每个应用程序都安装在其他位置。 我的代码(使用Javax): 该代码在我的测试设备上运行良好,但在其他使用我的应用程序的设备上崩溃。 我得到的错误:javax.mail.身份验证失败异常:534-5.7.14请通过534-5.7.14您的网络浏览器登录,然后重试。534-5.7.14在534 5.7.

    • 我在我的客户端应用程序(我的Spring网关)中配置客户端凭据流时遇到了一些问题。 我的授权服务器功能正常,与邮递员一起测试,没有任何问题。 但在我的客户机应用程序中,oauth2配置似乎没有编译错误。 当我调用服务器资源上的受保护资源时,我的客户端应用程序似乎试图调用其基础中的URL,而不是授权服务器。 请参阅我的配置文件中的代码: 我的客户依赖: 我的网络客户端的配置: 我在资源上的呼叫者: