Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.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
无法从Azure AD中注册的应用程序获取访问令牌_Azure_Post_Azure Active Directory_Microsoft Graph Api_Access Token - Fatal编程技术网

无法从Azure AD中注册的应用程序获取访问令牌

无法从Azure AD中注册的应用程序获取访问令牌,azure,post,azure-active-directory,microsoft-graph-api,access-token,Azure,Post,Azure Active Directory,Microsoft Graph Api,Access Token,我正在尝试在nugget manager中实例化来自Microsoft.Graph的GraphServiceClient的新实例 我们已经做了什么: 创建ASP.NET Core 2.0控制台应用程序 从Nugget添加Microsoft.Graph 在Azure广告门户中注册应用程序以获取应用程序机密ID(应用程序密码)和应用程序ID(客户端ID) 从Azure AD门户检索租户ID(目录ID) 基本上,以下是我的ASP.NET Core 2.0 projet(控制台应用程序)的全部代码: 远

我正在尝试在nugget manager中实例化来自Microsoft.Graph的GraphServiceClient的新实例

我们已经做了什么:

  • 创建ASP.NET Core 2.0控制台应用程序
  • 从Nugget添加Microsoft.Graph
  • 在Azure广告门户中注册应用程序以获取应用程序机密ID(应用程序密码)和应用程序ID(客户端ID)
  • 从Azure AD门户检索租户ID(目录ID)
  • 基本上,以下是我的ASP.NET Core 2.0 projet(控制台应用程序)的全部代码:

    远程服务器返回错误:(400)请求错误

    根据这一来源: 我应该收到这样的东西:

    {
      "token_type": "Bearer",
      "expires_in": 3599,
      "access_token": 
      "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBP..."
    }
    
    我需要的是初始化GraphServiceClient的访问令牌


    你知道为什么Microsoft Azure在这个请求上失败了吗?

    你应该听从juunas的建议,使用像ADAL这样的库,它会帮你做到这一点

    如果您想自己调用来检索令牌,首先通过测试来自Postman等工具的相同请求来验证问题是否来自代码,而不是来自应用程序注册。当您收到错误400时,可能是因为您的代码错误,并且您的请求格式不正确


    我不习惯使用WebClient进行http调用,所以我不知道出了什么问题,但我想说这可能与您处理参数的方式有关。如果我是你,我会使用和HttpClient,你可以找到一些使用stackoverflow()编码的表单url的查询示例。

    你应该遵循juunas的建议,使用像ADAL这样的库,它可以为你做这些

    如果您想自己调用来检索令牌,首先通过测试来自Postman等工具的相同请求来验证问题是否来自代码,而不是来自应用程序注册。当您收到错误400时,可能是因为您的代码错误,并且您的请求格式不正确


    我不习惯使用WebClient进行http调用,所以我不知道出了什么问题,但我想说这可能与您处理参数的方式有关。如果我是你,我会使用和HttpClient,你可以找到一些查询示例,其中表单url编码为stackoverflow()。

    你应该查看ADAL(Azure AD身份验证库)。它可以为您处理令牌获取。这里有一些很棒的快速入门,向您展示了如何使用ASP.NET获得第一次调用。这将使用MSAL库,而不是自己编写代码来获取访问令牌。您应该查看ADAL(Azure AD authentication library)。它可以为您处理令牌获取。这里有一个很好的快速入门,向您展示了如何使用ASP.NET获得最初的调用。这将使用MSAL库而不是自己编写代码来获取访问令牌。我最终通过使用HttpClient而不是WebClient使其工作,我还需要更改“范围”参数的值为“”。我最终通过使用HttpClient而不是WebClient使其工作,我还需要将“scope”参数的值更改为“”。
    string url = $"https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token";
    string @params = $"client_id={appId}&" +
                "scope=User.Read&" +
                $"client_secret={appSecret}&" +
                "grant_type=client_credentials";
    
    jsonStringResult = webClient.UploadString(url, @params);
    
    {
      "token_type": "Bearer",
      "expires_in": 3599,
      "access_token": 
      "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBP..."
    }