2 Stimmen

DotNetOpenAuth und Google

Ich habe den folgenden Code:

protected void Page_Load(object sender, EventArgs e)
{
    var openId = new OpenIdRelyingParty();
    HttpContext httpContext = HttpContext.Current;

    var headers = new WebHeaderCollection();
    foreach (string header in httpContext.Request.Headers)
    {
        headers.Add(header, httpContext.Request.Headers[header]);
    }

    string requestUrl = string.Format("http://localhost:12345/Login/{0}",
                                       httpContext.Request.Url.Query);

    var requestInfo = new HttpRequestInfo(httpContext.Request.HttpMethod,
                                            new Uri(requestUrl),
                                            httpContext.Request.RawUrl, headers,
                                            httpContext.Request.InputStream);

    var response = openId.GetResponse(requestInfo);

    if (response != null)
    {
        ClaimsResponse claimResponse = response.GetExtension<ClaimsResponse>();
        lblUser.Text = claimResponse.FullName;
        if (response.Exception != null)
        {
            lblError.Text = response.Exception.Message;
        }
    }
}

protected void btnTest_Click(object sender, EventArgs e)
{
    try
    {
        using (OpenIdRelyingParty openId = new OpenIdRelyingParty())
        {
            string identifier = @"https://www.google.com/accounts/o8/id";

            var request = openId.CreateRequest(identifier,
                                                new Realm("http://localhost:12345/"),
                                                new Uri("http://localhost:12345/Login/"));

            request.AddExtension(new ClaimsRequest
                                        {
                                            Email = DemandLevel.Require
                                        });

            request.RedirectToProvider();
        }
    }
    catch (Exception ex)
    {
        // TODO: log exception
        throw;
    }
}

Wenn ich den Code ausführe, wird der Benutzer authentifiziert, aber ClaimsResponse null ist.
Der Code funktioniert gut mit MyOpenId .

Für jede Hilfe wären wir dankbar.

0voto

Andrew Arnott Punkte 77359

Die Informationen hier sind nützlich: Abrufen von OpenId-Nutzerinformationen (Claims) über Anbieter hinweg

Das Goldnugget, das Sie wahrscheinlich in Ihrer Anwendung vermissen, ist die AXFetchAsSregTransform .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X