升级DotNetOpenAuth后,OpenIdButton无法获取电子邮件地址

时间:2012-06-15 05:21:53

标签: openid dotnetopenauth

我一直致力于DotNetOpenAuth使用Google应用程序进行身份验证并要求返回电子邮件地址。

当我使用之前版本的DotNetOpenAuth.dll时,我有一个工作程序。但是当我使用当前版本更新Dll时,我的代码就被破坏了。该应用程序可以进行身份​​验证,但不会回复电子邮件地址。

我的代码是:

<rp:OpenIdButton runat="server" ImageUrl="~/images/google.jpg" Text="Login with Google" ID="OpenIdButton1"
            Identifier="https://www.google.com/accounts/o8/id" LogOnMode="None" OnLoggingIn="test" OnLoggedIn="OpenIdLogin1_LoggedIn">
            <Extensions>
                <sreg:ClaimsRequest Email="Require" />
            </Extensions>

protected void OpenIdLogin1_LoggedIn(object sender, OpenIdEventArgs e)
    {
        // Hide login button.
        OpenIdButton1.Visible = false;        

        // Get email.
        //ClaimsResponse profile = e.Response.GetExtension<ClaimsResponse>();
        ClaimsResponse profile = e.Response.GetUntrustedExtension<ClaimsResponse>();
        string email = profile.Email;  

And the code breaks at the above line.

新的Dll有什么变化吗?

1 个答案:

答案 0 :(得分:0)

您的代码依赖于AXFetchAsSregTransform behavior的使用。请查看链接并确保您的web.config文件在<configSections>区域中更新,以适应最新DotNetOpenAuth所需的新xml。您的web.config可能已经声明了AXFetchAsSregTransform,但在更新configSections之前它会被忽略。

顺便说一句,您应该not通常使用GetUntrustedExtension