我希望设置一个流程来通过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);
}
}