OneDrive用于商业Oauth2认证

本文关键字:Oauth2 认证 用于 OneDrive | 更新日期: 2023-09-27 18:03:22

我正在尝试使用OAuth2.0认证协议访问OneDrive for Business。我遵循了这个例子:http://msdn.microsoft.com/EN-US/library/dn605894 (v = office.15) . aspx这是目前为止的代码:

        //  Create an authentication context
        AuthenticationContext ac = new AuthenticationContext(string.Format("https://login.windows.net/{0}",
        ClaimsPrincipal.Current.FindFirst(TenantIdClaimType).Value));
        String id = ClaimsPrincipal.Current.FindFirst(TenantIdClaimType).Value;
        //  Create a client credential based on the application id and secret.
        ClientCredential clcred = new ClientCredential(AppPrincipalId, AppKey);
        //  Using the authorization code acquire an access token.
        var arAD = ac.AcquireTokenByAuthorizationCode(code, new Uri(appRedirect), clcred);

我得到一个授权码是畸形的错误。我不明白为什么我收到这个消息。

任何帮助将不胜感激!

OneDrive用于商业Oauth2认证

有同样的问题,当我试图手动获得授权代码,然后从控制台应用程序使用它。不知道为什么对我不起作用。

但是当我从Web应用程序中使用它时,执行授权并返回接收代码的相同应用程序(因为我将其指定为returnURL) -一切都有效。

我建议你看一下这个例子

https://github.com/AzureADSamples/WebApp-WebAPI-OAuth2-UserIdentity-DotNet

还有这篇文章来理解好下面发生了什么:

http://blogs.msdn.com/b/exchangedev/archive/2014/03/25/using - oauth2 -访问日历-接触- - - -邮件- api - -交流-网络-中-办公室- 365. - aspx

注:这不是一个OneDrive,但我有完全相同的问题,所以如果你能使它与Exchange或GraphApi工作,那么它应该为OneDrive工作。

授权码格式错误,如果发送的授权码格式不正确,将导致错误。可能是您发送的授权码是authcode和会话状态的编码值。您需要分隔两个值并只发送验证码。或者解码验证码和会话状态之间的'&'符号(分隔符),并将它们作为两个参数发送。

ADAL4j中的方法AcquireTokenByAuthorizationCode(…)只接受authcode。