2011-04-20 4 views
1

다음 웹 사이트에서 사용자가 내 웹에서 찾은 다음 코드를 사용하고 있습니다. 그러나 사용자는 gmail에 로그인하더라도 버튼을 클릭하여 사이트에 로그인해야합니다. Gmail에 로그인 할 때 자동으로 로그인됩니다. 그래서 어떻게 이렇게하려면 다음 코드를 수정합니까?DotNetOpenAuth를 사용하여 사용자가 Google에 로그인했는지 여부를 확인하는 방법

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; 
       } 
    } 
} 

private void CreateRequest() 
{ 
    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(); 
    } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    CreateRequest(); 
} 

답변

0

당신은 conflating 두 가지 - 구글은 오픈 ID 공급자 인, 그리고 Google 사용자는 구글에 로그인된다.

Google을 OpenId 제공 업체로 사용한다는 것은 사용자가 자신이 말하는 사람인지 확인할 수 있음을 의미합니다.

이것은 Google에 로그인 한 Google 사용자와 다릅니다. Google의 OpenId 제공 업체가 공개하는 것이 아니며 사용자의 신원과는 관련이 없습니다.

즉, OpenId 및 DotNetOpenAuth를 통하지 않고 원하는 것을 할 수 없습니다.

+0

내 생각에 OpenID를 사용하는 것이 내 문제를 해결하는 올바른 방법이 아닙니다. stackoverflow 사이트 자체에는 Gmail 로그인 옵션이 있습니다. Gmail에 이미 로그인 했으므로 Gmail에 다시 로그인하지 않았습니다. 나는 비슷한 것을 어떻게합니까? ASP .NET을 사용 중입니다. – Janaka

+0

@Janaka - 아니요, 없습니다. OpenId 제공 업체로 Google을 사용하여 StackOverflow에 로그인하는 방법이 있습니다. 나는 당신이 묘사하고있는 것이 도서관과 구글에 의해 자동적으로 이루어진다 고 믿는다. 그래서 구글은 당신이 로그인했다는 것을 알기 때문에 인증을 받고 다시 로그인 할 필요없이 당신이 누구인지를 알려준다. – Oded

+1

알았어, 고마워. 내 문제는 왜 Gmail에 로그인 했는데도 자동 로그인이 안되는 이유였습니다. 이유는 내가 crome에서 gmail에 기록되었고 IE를 사용하여 앱을 디버깅하고 있었기 때문입니다 – Janaka

관련 문제