Step 2: Add following section into web.config file:
Step 3: Add an action for Authentication
protected static OpenIdRelyingParty openid = new OpenIdRelyingParty();
[ValidateInput(false)]
public ActionResult LoginByGoogle(string returnUrl)
{
var response = openid.GetResponse();
if (response == null)
{
string openidUrl = "https://www.google.com/accounts/o8/id";
Identifier id;
if (Identifier.TryParse(openidUrl, out id))
{
try
{
var req = openid.CreateRequest(openidUrl);
var fetch = new FetchRequest();
fetch.Attributes.Add(new AttributeRequest(WellKnownAttributes.Contact.Email, true));
req.AddExtension(fetch);
return req.RedirectingResponse.AsActionResult();
}
catch (ProtocolException ex)
{
ViewData["Message"] = ex.Message;
return View("LogOn");
}
}
ViewData["Message"] = "Invalid identifier";
return View("LogOn");
}
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
Session["FriendlyIdentifier"] = response.ClaimedIdentifier;
var sreg = response.GetExtension();
if (sreg != null)
{
var model = new RegisterModel()
{
Email = sreg.Email,
};
FormsAuthentication.SetAuthCookie(model.Email, true /* createPersistentCookie */);
return RedirectToAction("Home", "Index");
}
return View("LogOn");
case AuthenticationStatus.Canceled:
ViewData["Message"] = "Canceled at provider";
return View("LogOn");
case AuthenticationStatus.Failed:
ViewData["Message"] = response.Exception.Message;
return View("LogOn");
}
return new EmptyResult();
}
Step 4: Add a link to point to this Action
@Html.ActionLink("Log in using Google", "LoginByGoogle")