我想要做的是,如果用戶登錄到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