你能看看这个问题吗:
你可以在"https://test-id.org/OP/Sreg.aspx“上测试雅虎sreg。
ID:"https://me.yahoo.com/“用户名: goughev@yahoo.com密码: paranoid
现在的问题是
这段代码适用于谷歌,但不适用于Yahoo sreg,因为response.GetUntrustedExtension() alwase为雅虎的属性返回空值
var opUrl = LoginCore.GetProviderUrl(provider, openId);
var openIdRelyingParty = new OpenIdRelyingParty(null);
var response = openIdRelyingParty.GetResponse();
Identifier id;
if (response == null)
{
if (Identifier.TryParse(opUrl, out id))
{
try
{
var claim = new ClaimsRequest();
claim.Email = DemandLevel.Require;
claim.FullName = DemandLevel.Request;
claim.Gender = DemandLevel.Request;
claim.Nickname = DemandLevel.Require;
var request = openIdRelyingParty.CreateRequest(opUrl);
request.AddExtension(claim);
return request.RedirectingResponse.AsActionResult();
}
catch (Exception ex)
{
}
}
else
{
Model.Errors.Add(GeneralErrors.Unexpected());
return View("SignupUnTrustedOpenId");
}
}
else
{
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
var claimsData = response.GetUntrustedExtension<ClaimsResponse>();
if (claimsData != null)
{
email = claimsData.Email;我正在使用以下配置:
<dotNetOpenAuth>
<openid>
<relyingParty>
<security requireSsl="false" ignoreUnsignedExtensions="false" maximumHashBitLength="256" minimumHashBitLength="160" rejectDelegatingIdentifiers="true" rejectUnsolicitedAssertions="false" requireAssociation="false" requireDirectedIdentity="false" />
<behaviors>
<add type="DotNetOpenAuth.OpenId.Behaviors.AXFetchAsSregTransform, DotNetOpenAuth" />
</behaviors>
</relyingParty>
</openid>
<messaging>
<untrustedWebRequest>
<whitelistHosts>
<add name="localhost" />
</whitelistHosts>
</untrustedWebRequest>
</messaging>
</dotNetOpenAuth>我使用的是latiest版本3.2.0.9177
非常感谢您的帮助
维塔利
发布于 2009-08-23 01:14:06
雅虎的SREG扩展支持目前仅处于测试阶段。雅虎只愿意将SREG支持暴露给白名单上的RP。See here.
我用我自己的雅虎账号通过了test-id.org测试,它起作用了。添加sreg扩展的代码看起来不错。所以我怀疑唯一的问题是你还不在雅虎的白名单上。
https://stackoverflow.com/questions/1311607
复制相似问题