【问题标题】:Why am I getting an Unauthorized response with the Outlook API with Azure Active Directory?为什么使用 Azure Active Directory 的 Outlook API 会收到未经授权的响应?
【发布时间】:2021-03-10 17:51:57
【问题描述】:

我正在创建一个任务,它将使用 Microsoft Azure Active Directory 检索 Outlook 邮件中的消息。

我设置了我的 Azure 帐户。注册一个应用程序,添加证书,然后将用户添加到我的 AD。我的登录方法返回一个访问令牌,这意味着登录成功,并将访问令牌传递给 Outlook 消息 API。但 Outlook 消息 API 返回 unauthorize。

这是我的范围:电子邮件 Group.Read.All Mail.Read Mail.Read.Shared Mail.ReadBasic openid profile User.Read User.ReadBasic.All Mail.ReadWrite

我使用 Laravel HTTP 客户端发送请求。希望任何人都可以帮助我,我在这个问题上坚持了一周

     public function __construct()
     {
          $this->params = [
             'client_id'       => env('OAUTH_APP_ID'),
             'scope'           => env('OAUTH_SCOPES'),
             'client_secret'   => env('OAUTH_APP_PASSWORD'),
             'username'        => 'xxxxxxxx@mytenant.onmicrosoft.com',
             'password'        => 'xxxxxxxx',
             'grant_type'      => 'password',
             'redirectUri'     => env('OAUTH_REDIRECT_URI'),
             'urlAuthorize'    => env('OAUTH_AUTHORITY').env('OAUTH_AUTHORIZE_ENDPOINT'),
             'urlAccessToken'  => env('OAUTH_AUTHORITY').env('OAUTH_TOKEN_ENDPOINT'),
             'urlResourceOwnerDetails' => '',
          ];
      }
      public function signin()
      {
          $url = 'https://login.microsoftonline.com/organizations/oauth2/v2.0/token';
          $response = Http::asForm()->post($url, $this->params);
          if($response->ok()){
               $returnData = $response->json();
               $mail_api = 'https://outlook.office.com/api/v2.0/me/messages';
               $messagesResponse = Http::withToken($returnData['access_token'])->get($mail_api);
               dd($messagesResponse);
          }
       }

这是我的登录回复。我使用 Laravel HTTP 客户端发送请求。

对于我授予的权限中的附加信息

【问题讨论】:

  • “Active Directory”和“Azure Active Directory”完全不相关——它们共享一个名称的事实让每个人都感到困惑。我正在编辑您的问题以消除歧义。
  • 您需要编辑您的屏幕截图以不显示您的不记名令牌。这是敏感信息。
  • 感谢@Dai 的反馈和澄清。我指的是 Azure Active Directory
  • OAUTH_SCOPES 使用什么值?
  • @Dai 我更新了我的帖子以获取范围和权限

标签: laravel azure azure-active-directory azure-web-app-service msal


【解决方案1】:

document中有提到。调用此 API 需要以下权限之一:

https://outlook.office.com/mail.read
wl.imap

并且您的问题中的权限(例如 Mail.Read、Mail.Read.Shared、Mail.ReadBasic)用于 Microsoft Graph API,例如 Get message API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2017-11-26
    • 2018-03-08
    相关资源
    最近更新 更多