我有一个azure广告b2c,其中包含2个自定义策略,一个用于统一登录/登录页面,另一个用于重置密码。
我创建帐户并登录后,无法从https://graph.microsoft.com/v1.0/me
获得成功的响应,并从中得到以下错误:
AADB2C90077: User does not have an existing session and request prompt parameter has a value of 'None'.
Correlation ID: 6ec76033-f72e-405d-ba1a-04c7534a571e
Timestamp: 2018-08-21 00:56:07Z
|interaction_required
我使用以下代码(使用MSAL.js和axios)发出请求:
const config = {
tenant: 'tenant.onmicrosoft.com',
clientId: 'app-id',
signInSignUpPolicy: 'https://login.microsoftonline.com/tfp/my_tenant/policy/',
passwordResetPolicy: 'https://login.microsoftonline.com/tfp/my_tenanat/my_pr_policy/',
scopes: ['https://graph.microsoft.com/user.read'],
redirectUri: 'http://theredirect.uri',
cacheLocation: 'localStorage',
graphUrl: 'https://graph.microsoft.com/v1.0',
};
/**
* @returns {Promise<any>}
*/
accessToken() {
return new Promise(async (resolve, reject) => {
try {
const accessToken = await this.userAgent.acquireTokenSilent(config.scopes);
resolve(accessToken);
} catch (exception) {
reject(exception);
// this.userAgent.acquireTokenRedirect(config.scopes).then(resolve, reject);
}
});
}
/**
* @param endpoint
* @returns {AxiosPromise<any>}
*/
async get(endpoint) {
const accessToken = await this.accessToken();
const requestConfig = {
headers: { Authorization: 'Bearer ' + accessToken },
};
const url = config.graphUrl + "/" + endpoint;
return axios.get(url, requestConfig);
}
答案 0 :(得分:2)
Graph API仅适用于Azure AD“普通”用户和应用程序。含义-也没有一个B2C用户(也称为local
)可以使用GraphAPI。
如果您需要在B2C上使用图API,则唯一的机会是为在B2C租户的“普通” Azure AD部分-more info and detailed description here中注册的应用程序使用应用程序标识。
请注意,Microsoft Graph不适用于B2C用户。