我正在尝试使用dotNetOpenId登录GMail帐户.它工作,但我无法检索任何索赔.我知道我也可以检索电子邮件地址或用户名,但只有ClaimedIdentifier可用时才会返回任何声明.有人知道如何从Gmail帐户
谢谢
// Either you're creating this already or you can get to it in // the LoggingIn event of the control you're using. IAuthenticationRequest request; // Add the AX request that says Email address is required. var fetch = new FetchRequest(); fetch.Attributes.Add( new AttributeRequest(WellKnownAttributes.Contact.Email, true)); request.AddExtension(fetch);
然后,Google会对用户进行身份验证并返回您可以获得的电子邮件地址:
var fetch = openid.Response.GetExtension<FetchResponse>(); if (fetch != null) { IList<string> emailAddresses = fetch.GetAttribute( WellKnownAttributes.Contact.Email).Values; string email = emailAddresses.Count > 0 ? emailAddresses[0] : null; }
您可以在主题上看到my blog post以获取更多信息.这里需要注意的重要一点是,如果您按需要标记,Google只会告诉您用户的电子邮件地址(正如我在上面的代码段中所做的那样).但这也意味着如果用户不想分享他的电子邮件地址,他根本无法登录.抱歉,这就是Google设置它的方式.不幸的是,人们使用的其他提供商有不同的行为.