c# - OpenID:尝试从 Google OP 获取电子邮件地址

标签 c# openid dotnetopenauth

我正在使用 dotnetopenauth 3.2 来实现 Openid,但无法弄清楚如何让 Google 在 claim 响应中传递电子邮件地址。我知道谷歌不支持简单注册,但我不能确定他们支持什么。

这个问题需要注意的是,我刚刚开始学习 OpenID,我知道我对规范没有扎实的了解,我认为这导致了我的困惑。

如有任何帮助,我们将不胜感激!

最佳答案

好的,明白了。我在 Goolge's Federated Log API group 上发布了一个问题并被告知使用 Attribute exchange .

下面是 DotNetOpenAuth 的代码.

请不要在生产中使用此代码。这仅用于说明目的!

请求:

using (OpenIdRelyingParty openid = new OpenIdRelyingParty())
{
    IAuthenticationRequest request = openid.CreateRequest(openidurl);

    var fetch = new FetchRequest();
    fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
    request.AddExtension(fetch);

    // Send your visitor to their Provider for authentication.
    request.RedirectToProvider();
}

响应:

OpenIdRelyingParty openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response != null)
{
    switch (response.Status)
    {
        case AuthenticationStatus.Authenticated:
        {
            var fetch = response.GetExtension<FetchResponse>();
            string email = string.Empty();
            if (fetch != null)
            {
                email =  fetch.GetAttributeValue(
                    WellKnownAttributes.Contact.Email);
            }

            FormsAuthentication.RedirectFromLoginPage(
                response.ClaimedIdentifier, false);
            break;
        }
        ...
    }
}

关于c# - OpenID:尝试从 Google OP 获取电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301200/

相关文章:

c# - 如何使用 .net 连接到 Facebook 聊天?

c# - 使用 dapper.NET C# 插入列表

spring-security - 如何或何时关注重定向的 OpenID?

python - Openid报错: Received "invalidate_handle" from server是什么原因

c# - 我应该为 ASP .NET MVC 应用程序使用内置的成员资格提供程序吗?

C# Func 委托(delegate)结合 lambda 表达式不正确

c# - 几乎所有 OpenId 依赖方都拒绝来 self 的 dotNetOpenAuth 支持的提供商的断言

c# - 获取 OAuth2 刷新 token

single-sign-on - DotNetOpenAuth:未找到 OpenID 终结点

c# - 哪个换行符同时适用于 C# 和 HTML?