我正在为我的应用程序使用 Window Azure 平台,我试图从用户在 google/yahoo 中的帐户获取用户信息。
但是我通过 Azure 的输入/输出声明获得的信息只是他们的姓名、电子邮件地址和身份提供商...有人可以帮助我在他们在 google/yahoo 注册时获取他们的国家/地区或手机号码
这是我用于获取声明的示例代码:
protected void Page_Load(object sender, EventArgs e)
{
{
ClaimsPrincipal icp = Thread.CurrentPrincipal as ClaimsPrincipal;
ClaimsIdentity claimsidentity = icp.Identity as ClaimsIdentity;
string email = "", name = "", idprovider = "" ;
foreach (Claim c in claimsidentity.Claims)
{
if (c.ClaimType == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")
{
email = c.Value;
}
if (c.ClaimType == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name")
{
name = c.Value;
}
if (c.ClaimType == "http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider")
{
idprovider = c.Value;
}
}
Label1.Text = (name + email + idprovider);
当我编辑我的规则时,ClaimsPrincipal 没有将国家/手机号码值计入其帐户....PLZ HELP !!!!!!
最佳答案
据我所知 - 不是直接的,但事情应该是这样的!
当用户同意在您的应用程序中提供他或她的身份时,他们不一定也不会明确同意与您共享个人资料信息,因此身份提供商确实不应该这样做。
以我的拙见,一些提供商已经提供了太多的内容 - 我没想到他们会共享除 GUID 之外的任何内容,就像 Microsoft 所做的那样。例如,谷歌共享姓名和电子邮件地址,但我不一定希望允许这样做。很多时候,我希望将我的 Gmail 电子邮件地址保密,并为我登录的应用程序提供一个不同的电子邮件地址,或者根本不提供。
简而言之 - 我们的观点是,如果您想要有关用户的任何信息 - 您应该向他们询问,而不是从其他地方获取。
有关此 View 的更多信息,如果有兴趣,请点击此处 - http://yossidahan.wordpress.com/2012/02/19/end-to-end-authentication-and-authorisation-scenario-for-mvcacs/
关于asp.net - 如何将自定义声明添加到 ACS 服务身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15196917/