谷歌响应中的OAuth2.0问题

时间:2013-08-19 14:13:34

标签: c# asp.net google-openid

我遇到有关openid的问题,经过身份验证检查后,我无法从google获取完整信息。我需要谷歌的完整回复。我正在获得空白价值。请尽快解决。

我的代码是 -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Xml.XPath;
using DotNetOpenAuth.OpenId;
using DotNetOpenAuth.OpenId.RelyingParty;
using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration;
using DotNetOpenAuth.OpenId.Extensions.AttributeExchange;

public partial class geocode : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        HandleOpenIDProviderResponse();

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string geoValue = GetLongitudeAndLatitude(TextBox1.Text, "false");
        Label1.Text = geoValue;
    }
    public string GetLongitudeAndLatitude(string address, string sensor)
    {
        string urlAddress = "http://maps.googleapis.com/maps/api/geocode/xml?address=" + HttpUtility.UrlEncode(address) + "&sensor=" + sensor;
        string returnValue = "";
        try
        {
            XmlDocument objXmlDocument = new XmlDocument();
            objXmlDocument.Load(urlAddress);
            XmlNodeList objXmlNodeList = objXmlDocument.SelectNodes("/GeocodeResponse/result/geometry/location");
            foreach (XmlNode objXmlNode in objXmlNodeList)
            {
                // GET LONGITUDE 
                returnValue = objXmlNode.ChildNodes.Item(0).InnerText;

                // GET LATITUDE 
                returnValue += "," + objXmlNode.ChildNodes.Item(1).InnerText;
            }
        }
        catch
        {
            // Process an error action here if needed  
        }
        return returnValue;
    }







    OpenIdRelyingParty openid = new OpenIdRelyingParty();



    protected void HandleOpenIDProviderResponse()
    {
        var response = openid.GetResponse();

        if (response != null)
        {
            switch (response.Status)
            {
                case AuthenticationStatus.Authenticated:
                   // NotLoggedIn.Visible = false;
                    btngmaillogout.Visible = true;

                    var fetchResponse = response.GetExtension<FetchResponse>();
                    Session["FetchResponse"] = fetchResponse;
                    var response2 = Session["FetchResponse"] as FetchResponse;

                    Label2.Text = response2.GetAttributeValue(WellKnownAttributes.Contact.Email);
                    Label3.Text = GetFullname(response2.GetAttributeValue(WellKnownAttributes.Name.First), response2.GetAttributeValue(WellKnownAttributes.Name.Last));
                    Label4.Text = response2.GetAttributeValue(WellKnownAttributes.BirthDate.WholeBirthDate);
                    Label5.Text = response2.GetAttributeValue(WellKnownAttributes.Contact.Phone.Mobile);
                    Label6.Text = response2.GetAttributeValue(WellKnownAttributes.Person.Gender);
                    break;
                case AuthenticationStatus.Canceled:
                    Label1.Text = "Cancelled.";
                    break;
                case AuthenticationStatus.Failed:
                    Label1.Text = "Login Failed.";
                    break;
            }
        }
        else
        {
            return;
        }
    }

    protected void OpenLogin_Click(object src, CommandEventArgs e)
    {
        string discoveryUri = e.CommandArgument.ToString();
        var b = new UriBuilder(Request.Url) { Query = "" };
        var req = openid.CreateRequest(discoveryUri, b.Uri, b.Uri);
        var fetchRequest = new FetchRequest();
        fetchRequest.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
        fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.First);
        fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.Last);
        fetchRequest.Attributes.AddRequired(WellKnownAttributes.Person.Gender);
        fetchRequest.Attributes.AddRequired(WellKnownAttributes.Contact.Phone.Mobile);
        fetchRequest.Attributes.AddRequired(WellKnownAttributes.BirthDate.WholeBirthDate);
        req.AddExtension(fetchRequest);
        req.RedirectToProvider();
    }

    private static string GetFullname(string first, string last)
    {
        var _first = first ?? "";
        var _last = last ?? "";
        if (string.IsNullOrEmpty(_first) || string.IsNullOrEmpty(_last))
            return "";
        return _first + " " + _last;
    }

    protected void btngmaillogout_click(object sender, EventArgs e)
    {
        // logout from gmail and return to website default/home page
        Response.Redirect("successlogout.aspx");
    }


}

0 个答案:

没有答案