使用 OAuth C# 验证 Google 用户



我希望设置一个流程来通过OAuth验证来自Google的用户,这是我想要创建的预期行为。

用户

转到我提供的网址,我的应用程序返回到Google以查看他们是否已登录,并在未登录时对其进行身份验证,然后出现Google"登录我"提示,用户完成身份验证。

用户通过身份验证后,我想收集他们的基本信息(电子邮件、名字和姓氏)等。

一旦我有了它,我就会做其他事情,但我在那里很好。

我已经阅读了,但我很难了解整个OAuth身份验证过程以及它如何插入Google。有人可以指出我想要得到的方向吗?

我已经在 Google API 中创建了一个产品,并获得了客户端 ID 和密钥,所以我想我已经准备好启动一个 C# 应用程序了。

您需要

的一切都包含在此软件包中:http://dotnetopenauth.net/

查看他们的示例,它将向您展示如何请求部分用户信息以及如何阅读它们。

[编辑]

      const string CallbackParameter = "callback";
      const string Endpoint = "https://www.google.com/accounts/o8/id";
      using (var openid = new OpenIdRelyingParty())
      {
            var callbackUrl = new Uri(string.Format("{0}?{1}=true", _context.RequestUri.AbsoluteUri, CallbackParameter));
            var authRequest = openid.CreateRequest(Endpoint, new Realm(string.Format("{0}://{1}", _context.RequestUri.Scheme, _context.RequestUri.Authority)), callbackUrl);
            // Tell Google what we want
            var fetch = new FetchRequest();
            fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
            fetch.Attributes.AddRequired(WellKnownAttributes.Name.First);
            fetch.Attributes.AddRequired(WellKnownAttributes.Name.Last);
            authRequest.AddExtension(fetch);
            var response = authRequest.RedirectingResponse;
            var location = response.Headers["Location"];
            var fetch = response.GetExtension<FetchResponse>();
            if (fetch != null)
            {
                Username = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email);
                Email = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email);
                FirstName = fetch.GetAttributeValue(WellKnownAttributes.Name.First);
                LastName = fetch.GetAttributeValue(WellKnownAttributes.Name.Last);
            }
      }

相关内容

  • 没有找到相关文章

最新更新