Как использовать DotNetOpenAuth, чтобы определить, вошел ли пользователь в Google - PullRequest
1 голос
/ 20 апреля 2011

Я использую следующий код, найденный в сети, для аутентификации пользователей моего сайта.Но пользователь должен нажать кнопку, чтобы войти на сайт, даже если он вошел в 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;
              }
    }
}

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

1 Ответ

0 голосов
/ 20 апреля 2011

Вы объединяете две вещи - Google является поставщиком OpenID и пользователь Google входит в Google.

Использование Google в качестве поставщика OpenId означает, что вы можете проверить, является ли пользователь тем, кем они себя называют.

Это отличается от того, что пользователь Google вошел в Google - это не то, что Google, как поставщик OpenId, раскрыл бы, поскольку он не имеет отношения к личности пользователя.

Короче говоря, вы не можете делать то, что хотите, не используя OpenId и DotNetOpenAuth.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...