活动访问令牌(Active Access Token)是OAuth 2.0协议中的一种凭证,用于代表用户或应用程序访问受保护的资源。在Microsoft Graph API中,访问令牌是验证请求身份和权限的关键。
当出现"必须使用活动访问令牌来查询有关当前用户"的异常时,通常有以下几种原因:
// 示例:使用MSAL.js刷新令牌
const msalConfig = {
auth: {
clientId: 'your-client-id',
authority: 'https://login.microsoftonline.com/your-tenant-id',
redirectUri: 'http://localhost:3000'
}
};
const msalInstance = new msal.PublicClientApplication(msalConfig);
async function getToken() {
try {
const response = await msalInstance.acquireTokenSilent({
scopes: ['User.Read']
});
return response.accessToken;
} catch (error) {
// 静默获取失败,可能需要交互式登录
if (error instanceof msal.InteractionRequiredAuthError) {
return msalInstance.acquireTokenPopup({
scopes: ['User.Read']
}).then(response => response.accessToken);
}
throw error;
}
}
确保应用注册中已授予User.Read
权限,并且管理员已同意(对于需要管理员同意的权限)。
可以使用jwt.io解码令牌,检查:
exp
字段(过期时间)scp
或roles
字段(权限)aud
字段(目标受众是否正确)// C#示例:使用有效令牌调用Graph API
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var response = await httpClient.GetAsync("https://graph.microsoft.com/v1.0/me");
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
else
{
Console.WriteLine($"Error: {response.StatusCode}");
}
这种机制常见于:
通过正确处理访问令牌,可以确保应用安全地访问Graph API中的用户数据。
没有搜到相关的沙龙