2
我正在使用DotNetOpenAuth使用Google OpenId登录我的网站。简单的代码,之前讨论过很多次:DotNetOpenAuth - OpenId登录Google要求确认每次
protected static readonly string ENDPOINT = "https://www.google.com/accounts/o8/id";
public void RequestAuthentication(string realm, Uri returnUrl) {
using (OpenIdRelyingParty openid = new OpenIdRelyingParty()) {
IAuthenticationRequest openRequest = openid.CreateRequest(ENDPOINT, realm, returnUrl);
var fr = new FetchRequest();
fr.Attributes.Add(new AttributeRequest(WellKnownAttributes.Contact.Email, true));
fr.Attributes.Add(new AttributeRequest(WellKnownAttributes.Preferences.TimeZone, false));
fr.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.FullName, true));
fr.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.Alias, false));
fr.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.Last, true));
fr.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.First, true));
openRequest.AddExtension(fr);
openRequest.RedirectToProvider();
}
}
这工作,但每次谷歌要求确认通过用户的电子邮件到我的网站,而忽略‘记住我的决定’复选框!
我已经试图用ClaimsRequest替换FetchRequest(带有AXFetchAsSregTransform) - 没有区别。
我在做什么错了?
很高兴你解决了它。只有一点提示:通过'使用DotNetOpenAuth.OpenId.Extensions.AttributeExchange',你可以简化你的每一个属性行:'fr.Attributes.AddRequired(WellKnownAttributes.Contact.Email))' –