使用带有硬编码用户名和密码的Office Outlook API

时间:2016-07-29 04:09:47

标签: authentication oauth outlook authorization office365

我正在尝试构建一个(C#)Web应用程序,允许客户与我约会。 我希望网络应用能够阅读并添加条目到我的Outlook日历。 许多用户将使用网络应用程序,但网络应用程序只能访问一个Outlook日历 - 我的。 我能够开始工作的所有示例都让Web应用程序用户以交互方式进行身份验证 - 但我的用户不会知道我的密码。 我想在网络应用中硬编码我的用户名/电子邮件地址和密码。

尝试获取令牌时,我收到错误:

 $(window).on('load', function () {
      alert("Window Loaded");
 });

我不是租客的管理员。有没有办法让我在没有管理员参与的情况下工作? 使用某种证书而不是用户名和密码作为用户凭证会有帮助吗?

我的代码(目前在一个简单的C#控制台应用程序中)如下:

Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException:
AADSTS65001: The user or administrator has not consented to use the application.
Send an interactive authorization request for this user and resource.

1 个答案:

答案 0 :(得分:2)

要启用使用用户名和密码直接请求令牌,我们需要同意使用该应用。

我们可以使用 OAuth 2.0授权代码授权流程来授予用户同意。以下是使用ADAL身份验证库( 3.13.1.846 )获取委托令牌的示例:

 static string authority= "https://login.microsoftonline.com/common";
 public static string GetDeligateToken(string resource, string clientId,string redirectURL)
    {
        AuthenticationContext authContext = new AuthenticationContext(authority);
        AuthenticationResult authResult= authContext.AcquireTokenAsync(resource, clientId,new Uri(redirectURL), new PlatformParameters(PromptBehavior.Auto)).Result;
        return authResult.AccessToken;
    }

在我们同意该应用后,现在我们可以使用您帖子中的代码来获取令牌。