![](/img/trans.png)
[英]Accessing Microsoft Graph API (for OneDrive) from ASP.Net Web API & MVC Web Application.
[英]How Store AccessTokens to Cookies and use them to call Graph API for Asp.net web application (non MVC)
我想调用图 API 来获取 OneDrive 数据。 我能够获得看起来像这样的 JWT // 故事
nts of the JSON look like this:
// {
// "token_type":"Bearer",
// "scope": "Directory.Read.All Files.ReadWrite Group.ReadWrite.All Mail.ReadWrite Mail.Send User.ReadBasic.All",
// "expires_in":"3599",
// "ext_expires_in": "0",
// "expires_on":"1426551729",
// "not_before":"1426547829",
// "resource":"https://graph.microsoft.com/",
// "access_token":"eyJ0eXAiOiJKV1QiLCJhb...",
// "refresh_token":"AAABAAAAvPM1KaPlrEqd...",
// "id_token":"eyJ0eXAiOiJKV1QiLCJhbGci..."
// }
刷新令牌、存储在 cookies 中并访问它们以调用 API 的正确步骤是什么。我浏览了很多可用的文档,仍然不确定什么是正确的流程和方法。
请指导我正确的做法。
感谢您伸出援手。 对于您的方案,我建议对 .NET 使用MSAL并实施授权代码流。 在此流程中,当用户登录 web 应用程序时,该应用程序会收到一个授权代码,该代码将被兑换以获取令牌以调用 web API。 MSAL 在获取令牌后缓存令牌并可以刷新令牌。 以下是从令牌缓存中获取令牌的方法:
AuthenticationResult result = null;
var accounts = await app.GetAccountsAsync();
try
{
result = await app.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
.ExecuteAsync();
}
catch (MsalUiRequiredException ex)
{
// A MsalUiRequiredException happened on AcquireTokenSilent.
// This indicates you need to call AcquireTokenInteractive to acquire a token
System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");
try
{
result = await app.AcquireTokenInteractive(scopes)
.ExecuteAsync();
}
catch (MsalException msalex)
{
ResultText.Text = $"Error Acquiring Token:{System.Environment.NewLine}{msalex}";
}
}
catch (Exception ex)
{
ResultText.Text = $"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}";
return;
}
if (result != null)
{
string accessToken = result.AccessToken;
// Use the token
}
在上面的示例中,应用程序首先尝试从令牌缓存中获取令牌。 如果抛出MsalUiRequiredException
异常,应用程序将以交互方式获取令牌。
请参阅有关授权代码流程的其他文档
如果您还有其他问题,请告诉我这是否有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.