Azure ADAL OutlookServiceClient无法获取非管理员帐户的数据



我使用Azure AD和Office 365 api在我的项目中做OAuth。我的问题是我只能有admin帐户(如"user@project.onmicrosoft.com")授权并获得数据,但非admin常规帐户(例如"user@hotmail.com")不能。

如何实现OAuth2

  1. 获取授权码:

https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id={my client Id}&redirect_uri={重定向uri}&resource=https%3A%2F%2Foutlook.office365.com%2F&state={guid}

  • 获取访问令牌和刷新令牌:
  •   TokenCache tokenCache = new TokenCache();
      ClientCredential credential = new ClientCredential(clientId, clientSecret);
      AuthenticationContext authContext = new AuthenticationContext(authorityUrl, tokenCache);
      AuthenticationResult authResult = authContext.AcquireTokenByAuthorizationCode(authorizationCode, new Uri(redirectUri), credential, recourceUri);
      string accessToken = authResult.AccessToken;
      string refreshToken = authResult.RefreshToken;
    
  • 获取用户数据(例如,日历事件):
  •   OutlookServicesClient outlookClient = new OutlookServicesClient(new Uri(recourceUri + "/api/v2.0"), async () => { return accessToken; });
      List<Event> microsoftEvents = new List<Event>();
      var events = await outlookClient.Me.Events.Take(10).ExecuteAsync();
      foreach (IEvent calendarEvent in events.CurrentPage)
      {
        Event microsoftEvent = new Event
        {
          Subject = calendarEvent.Subject,
          Body = calendarEvent.Body,
          Location = calendarEvent.Location,
          Start = calendarEvent.Start,
          End = calendarEvent.End
        };
        microsoftEvents.Add(microsoftEvent);
      }
    

    注意:

    1. 我不确定是否由Azure AD权限设置引起,因此目前授予"Windows Azure Active Directory"one_answers"Office 365 Exchange Online"的所有可用权限。
    2. 我没有支付这个Azure广告。我有一个Office 365开发者帐户,有一个链接到AAD内部的Office管理中心。不确定这是不是原因。我是否需要支付额外的AAD订阅费用?

    11/2/2016更新

    1. 以前对账户的误解。像"user@project.onmicrosoft.com"这样的帐户是Office 365帐户,而不是管理员帐户。Hotmail帐户实际上是普通的microsoft帐户

    2. Jason提到,Azure v1端点不支持microsoft帐户授权。这主要是指向授权代码的生成。

    3. 必须在新的门户(https://apps.dev.microsoft.com)中创建Azure AD应用程序。

    您说您授予了Exchange和Active Directory的所有权限。其中一些权限需要管理员,这可能是您的问题。您应该只授予您的应用程序所需的权限。

    相关内容

    • 没有找到相关文章

    最新更新