Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OneDrive用于业务Oauth2身份验证_C#_Ms Office_Onedrive - Fatal编程技术网

C# OneDrive用于业务Oauth2身份验证

C# OneDrive用于业务Oauth2身份验证,c#,ms-office,onedrive,C#,Ms Office,Onedrive,我正在尝试使用OAuth2.0身份验证协议访问OneDrive for Business。我举了一个例子: A这是我目前的代码: // Create an authentication context AuthenticationContext ac = new AuthenticationContext(string.Format("https://login.windows.net/{0}", ClaimsPrincipal.Current.

我正在尝试使用OAuth2.0身份验证协议访问OneDrive for Business。我举了一个例子: A这是我目前的代码:

        //  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);
我收到的授权码格式错误。我不明白为什么我会收到这个信息


任何帮助都将不胜感激

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

但当我从Web应用程序中使用它时,执行授权并接收返回代码的应用程序(因为我将其指定为returnURL)——一切正常

我建议你看看这个例子

这篇文章也是为了了解在好的环境下发生了什么:

附言。
它不是OneDrive,但我遇到了完全相同的问题,因此如果您可以使它与Exchange或GraphApi一起工作,那么它也应该适用于OneDrive。

授权代码格式不正确。如果您以不正确的格式发送授权代码,则会发生错误。可能是您正在发送的授权码是authcode和会话状态的编码值。您需要分离这两个值并只发送验证代码。或者解码身份验证代码和会话状态之间的“&”符号(分隔符),并将其作为两个参数发送


从ADAL4j获取TokenByAuthorizationCode(…)的方法只接受authcode。

请不要将您的问题标记为已解决。相反,用你的解决方案发布一个答案,并接受这个答案。现在你删除了它,这是非常混乱的…嗨,真的很抱歉的混乱。我用Java实现了这个问题。我使用HttpClient 3.1 Post方法获取授权代码、访问权和刷新令牌。我再次为这一混乱感到抱歉。