Я использую DotNetOpenAuth, и это то, чего мне не хватало ...
relyingParty.DiscoveryServices.Insert(0, new DotNetOpenAuth.OpenId.HostMetaDiscoveryService { UseGoogleHostedHostMeta = true, });
Если сначала поставить HostMetaDiscoveryService и разрешить UseGoogleHostedHostMeta, запрос будет работать как положено.
Заканчивается примерно так:
var relyingParty = new OpenIdRelyingParty();
relyingParty.DiscoveryServices.Insert(0, new DotNetOpenAuth.OpenId.HostMetaDiscoveryService { UseGoogleHostedHostMeta = true, });
var response = relyingParty.GetResponse();
if (response == null)
{
var googleID = "https://www.google.com/accounts/o8/site-xrds?hd=my.domain";
var request = relyingParty.CreateRequest(googleID);
request.RedirectToProvider();
}
else
{
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
break;
default:
break;
}
}