【发布时间】:2017-12-01 06:08:17
【问题描述】:
我试图从他们的 Microsoft 真实帐户中读取用户数据。我写的代码如下:
public void GetUserData(){
var authContext = new AuthenticationContext("https://login.microsoftonline.com/common/");
var result = _authenticationContext
.AcquireTokenAsync("https://graph.microsoft.com", "<my client/app ID>", "<redirect URI>", new PlatformParameters(PromptBehavior.RefreshSession))
.Result;
var accessToken = result.AccessToken;
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",accessToken);
var userResponse = httpClient.GetStringAsync("https://graph.microsoft.com/beta/me/").Result;
//DO SOMTHING WITH DATA
}
当我使用我的 AAD 凭据时,我的代码工作正常,但是当我使用我的个人帐户时,它给出了以下错误。
AADSTS50020:来自身份提供商的用户帐户“XXXX@outlook.com” 租户“默认目录”中不存在“live.com”并且不能 访问其中的应用程序“XXXXXXXXXXXXXXXXX” 租户。该帐户需要添加为外部用户 租户优先。注销并使用不同的 Azure Active 重新登录 目录用户帐户。
截图如下:
类似于this question。有人可以帮帮我吗?
【问题讨论】:
-
您是否在 azure Active Directory 中添加了个人真实帐户?
-
@Wayne Yang,未向 azure 广告添加任何帐户。我希望我的应用适用于任何真实帐户。
-
那么你必须使用 MSAL + AAD v2.0 端点而不是 ADAL + v1:docs.microsoft.com/en-us/azure/active-directory/develop/…
-
嗨,@sitchie,您不应该只使用 Azure AD 来实现这一点。这是 Azure AD B2B,您需要邀请用户进入您的目录并使用 v2.0 端点进行身份验证。根据您的要求,我建议您使用 Azure AD B2C 来实现这一点。 docs.microsoft.com/en-us/azure/active-directory-b2c/…
标签: c# azure azure-active-directory microsoft-graph-api