我想要做的是,如果用户登录到Gmail,如果他们去我的网站,他们会自动登录。如何使用DotNetOpenAuth登录网站?
我这样做在以下方式...也许有更好的方式正在做。
在我的网站上,我有一个地方可以给他们的gmail地址,所以我的网站知道注册用户的gamil地址。
因此,当他们去我的网站,我想知道他们是否登录到Gmail和他们的Gmail地址是什么。
我应该如何使用DotNetOpenAuth找到这些信息?
我从网上找到了以下代码,它正在对用户进行身份验证。但我不得不按下按钮,每次都进入Gmail登录。 如果用户已经在使用Gmail,我不必要求用户登录我可以使用它。 我如何修改此代码以实现这一目标?
static string openidurl = "https://www.google.com/accounts/o8/id";
protected void Page_Load(object sender, EventArgs e)
{
//The Response
OpenIdRelyingParty openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response != null)
{
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
var fetch = response.GetExtension<FetchResponse>();
string email = "";
if (fetch != null)
{
email = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email);
}
break;
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
using (OpenIdRelyingParty openid = new OpenIdRelyingParty())
{
IAuthenticationRequest request = openid.CreateRequest(openidurl);
var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
request.AddExtension(fetch);
// Send your visitor to their Provider for authentication.
request.RedirectToProvider();
}
}
我发现了一个代码示例,它完成了我想要的一部分,我如何修改它以检查当前登录的用户? – Janaka 2011-04-20 07:02:40
@Janaka您需要查看ASP.NET示例,您拥有的示例不是来自ASP.NET应用程序。我已经用如何验证用户当前登录的示例更新了我的答案。您还可以看到完整解释的ASP.NET MVC模型,我在这里解释过:http://stackoverflow.com/questions/5133921 /什么-OpenID的解决方案是,真正使用的按计算器/ 5133923#5133923 – Kiril 2011-04-20 12:15:21