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

时间:2018-07-24 12:41:48

标签: c# asp.net azure azure-active-directory powerbi

我下载了此示例:https://github.com/Microsoft/PowerBI-Developer-Samples/tree/master/User%20Owns%20Data/integrate-report-web-app/PBIWebApp

,我就能获得访问令牌。接下来,我将此访问令牌保存在数据库中,以备将来使用。使用存储在数据库中的令牌,我想获取用户的个人资料,但不确定如何操作。

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”之类的方法。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

您需要获取https://graph.microsoft.com资源的令牌,然后调用端点以获取用户信息:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_get

还有一个SDK可以使调用变得容易一些:https://www.nuget.org/packages/Microsoft.Graph/

答案 1 :(得分:1)

您可以在C#中使用JWTSecurityToken。另外,您可以访问https://jwt.io/来查看其工作情况。