0

我试图在 azure 数据目录中发布 excel 数据。我是在控制台应用程序中编写的。

我的代码是

static void Main()
{
    string DefaultCatalog = "DefaultCatalog";
    string DefaultGlossary = "DefaultGlossary";
    string fullUri = string.Format("https://api.azuredatacatalog.com/catalogs/{0}/glossaries/{1}/terms?api-version=2016-03-30", 
                    DefaultCatalog, DefaultGlossary);
    HttpWebRequest request = WebRequest.Create(fullUri) as HttpWebRequest;
    request.KeepAlive = true;
    request.Method = "GET";
    request.Accept = "application/json;adc.metadata=full";
    request.Headers.Add("Authorization", AccessToken().Result.CreateAuthorizationHeader());
    request.AllowAutoRedirect = false;
    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    if (response != null && response.StatusCode == HttpStatusCode.Redirect)
    {
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            var itemPayload = reader.ReadToEnd();
            JToken terms;
            JObject.Parse(itemPayload).TryGetValue("value", out terms);
            if (terms != null)
            {
                var r = JsonConvert.DeserializeObject<JArray>(terms.ToString());
            }
        }
    }
}

static async Task<AuthenticationResult> AccessToken()
{
    string clientId = "MyClientId";
    string client_secret = "MyClientSecret";
    string tenentId = "MytenentId";
    if (_authResult == null)
    {
        // Resource Uri for Data Catalog API
        string resourceUri = "https://api.azuredatacatalog.com/";
        string redirectUri = "https://login.live.com/oauth20_desktop.srf";
        string authorityUri = "https://login.windows.net/MytenentId/oauth2/authorize";
        AuthenticationContext authContext = new AuthenticationContext(authorityUri);

        _authResult = await authContext.AcquireTokenAsync(resourceUri, clientId, new Uri(redirectUri), new PlatformParameters(PromptBehavior.Always));

        //ClientCredential cc = new ClientCredential(clientId, client_secret);
        //_authResult = await authContext.AcquireTokenAsync(resourceUri, cc);

    }
    return _authResult;
}

我想从我的 azure 数据目录中获取词汇表列表。但它总是返回未经授权的错误。“远程服务器返回错误:(403) Forbidden。”

我的错误是

在此处输入图像描述

4

3 回答 3

1

确保您在词汇表管理员列表中。

ADC 在 github 中也有很棒的代码示例,可以执行您想做的事情,请查看: https ://github.com/Azure-Samples/data-catalog-bulk-import-glossary

于 2017-10-11T23:37:49.223 回答
1

您需要使用来获取正确的令牌: string authorityUri = " https://login.windows.net/common/oauth2/authorize ";

希望这会有所帮助,莫妮卡

于 2017-10-04T21:18:03.963 回答
0

数据目录仅包含委托权限。但是,我尝试使用应用程序权限。因此,在我将其更改为基于用户登录(委托权限)后,它会抛出未经授权。

现在它已经修复了。

感谢@Monica 和@Max 分享答案

于 2017-10-12T05:05:27.093 回答