Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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# 如何从访问令牌获取用户详细信息_C#_Asp.net_Azure_Azure Active Directory_Powerbi - Fatal编程技术网

C# 如何从访问令牌获取用户详细信息

C# 如何从访问令牌获取用户详细信息,c#,asp.net,azure,azure-active-directory,powerbi,C#,Asp.net,Azure,Azure Active Directory,Powerbi,我下载了这个示例: 我可以得到访问令牌。接下来,我将这个访问令牌保存在数据库中以备将来使用。使用存储在数据库中的这个令牌,我想获得用户的配置文件,但不知道如何做 public string GetAccessToken(string authorizationCode, string applicationID, string applicationSecret, string redirectUri) { //Redirect uri must matc

我下载了这个示例:

我可以得到访问令牌。接下来,我将这个访问令牌保存在数据库中以备将来使用。使用存储在数据库中的这个令牌,我想获得用户的配置文件,但不知道如何做

public string GetAccessToken(string authorizationCode, string applicationID, string applicationSecret, string redirectUri)
        {
            //Redirect uri must match the redirect_uri used when requesting Authorization code.
            //Note: If you use a redirect back to Default, as in this sample, you need to add a forward slash
            //such as http://localhost:13526/

            // Get auth token from auth code       
            TokenCache TC = new TokenCache();

            //Values are hard-coded for sample purposes
            string authority = Settings.Default.AADAuthorityUri;
            AuthenticationContext AC = new AuthenticationContext(authority, TC);
            ClientCredential cc = new ClientCredential(applicationID, applicationSecret);

            //Set token from authentication result
            return AC.AcquireTokenByAuthorizationCode(
                authorizationCode,
                new Uri(redirectUri), cc).AccessToken;
        }
我检查了AuthenticationContext类的方法,但它没有任何像“GetMe”之类的方法


非常感谢您的帮助。

ADAL仅用于身份验证,不用于调用Microsoft Graph API之类的API

您需要为
https://graph.microsoft.com
resource,然后调用端点以获取用户信息:


还有一个SDK可以使调用更容易一些:

ADAL仅用于身份验证,而不是用于调用类似Microsoft Graph API的API

您需要为
https://graph.microsoft.com
resource,然后调用端点以获取用户信息:


还有一个SDK可以使调用更容易一些:

您可以在C#中使用它。此外,您还可以访问以查看其工作情况。

您可以在C#中使用。此外,您还可以访问以查看其工作情况。

谢谢。是否有任何方法可以将此访问令牌与Graph API一起使用,或者是否需要其他类型的访问令牌?这是非常令人困惑的。另外,请让我知道ADAL中是否有任何方法可以知道令牌是否有效(可能已过期,或者可能是某人错误地修改了DB中的令牌)?很难说,您可以检查令牌受众(预期目标)的内容,例如(这是aud声明)。只要正确实现令牌缓存,ADAL就可以很好地处理令牌续订(如果它们过期)。不过,验证并不适合您,这是API的工作。看起来很公平。知道如何将令牌缓存保存到SQL server数据库吗?我认为默认情况下,它会保存在内存中。是的,默认情况下会保存在内存中。您可以在这里看到一个SQL令牌缓存示例:谢谢。是否有任何方法可以将此访问令牌与Graph API一起使用,或者是否需要其他类型的访问令牌?这是非常令人困惑的。另外,请让我知道ADAL中是否有任何方法可以知道令牌是否有效(可能已过期,或者可能是某人错误地修改了DB中的令牌)?很难说,您可以检查令牌受众(预期目标)的内容,例如(这是aud声明)。只要正确实现令牌缓存,ADAL就可以很好地处理令牌续订(如果它们过期)。不过,验证并不适合您,这是API的工作。看起来很公平。知道如何将令牌缓存保存到SQL server数据库吗?我认为默认情况下,它会保存在内存中。是的,默认情况下会保存在内存中。您可以在此处看到SQL令牌缓存的示例: