2012-02-08 2 views
-1

У меня есть два текстовых поля для имени пользователя и пароля, теперь я хочу, чтобы пользователи вводили свой электронный адрес электронной почты и пароль (имя пользователя и пароль работает от Google, веб-сервер - это Google) и войдите в систему ASP.net. Создайте сеанс имени пользователя и пароля. Затем я хочу, чтобы пользователь мог отправлять электронную почту с сайта asp.net с использованием тех же учетных данных gmail. Спасибо заранее, и любая помощь будет оценена по достоинству.Учетные записи Gmail для аутентификации веб-сайта ASP.net

+0

возможно duplicate: http://stackoverflow.com/questions/5435322/authentication-with-google-or-facebook –

+0

Вы описали, что должен делать ваш код, но вы не задавали вопрос. Что вы пробовали и какие проблемы вы столкнулись? –

+0

Пожалуйста, не запрашивайте имя пользователя и пароль своей учетной записи google. Любой программист, который делает это, не должен находиться рядом с компьютером. –

ответ

2

Ответ, который я хотел, это и этот код работает отлично. И я не хранил пароль нигде в сеансе и базе данных.

<form id="form1" runat="server"> 
     <div id="loginform"> 
     <div id="NotLoggedIn" runat="server"> 
      Log in with <img src="http://www.google.com/favicon.ico" /> 
      <asp:Button ID="btnLoginToGoogle" Runat="server" Text="Google"  OnCommand="OpenLogin_Click" 
       CommandArgument="https://www.google.com/accounts/o8/id" /> 
      <p /><asp:Label runat="server" ID="lblAlertMsg" /> 
     </div> 
     </div> 
    </form> 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using DotNetOpenAuth.OpenId; 
using DotNetOpenAuth.OpenId.RelyingParty; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     OpenIdAjaxRelyingParty rp = new OpenIdAjaxRelyingParty(); 
     var r = rp.GetResponse(); 
     if (r != null) 
     { 
      switch (r.Status) 
      { 


     case AuthenticationStatus.Authenticated: 
       NotLoggedIn.Visible = false; 
       Session["GoogleIdentifier"] = r.ClaimedIdentifier.ToString(); 
       Response.Redirect("Default2.aspx"); 
       break; 
      case AuthenticationStatus.Canceled: 
       lblAlertMsg.Text = "Cancelled."; 
       break; 
     } 

    } 

} 
protected void OpenLogin_Click(object sender, CommandEventArgs e) 
{ 
    string discoveryUri = e.CommandArgument.ToString(); 
    OpenIdRelyingParty openid = new OpenIdRelyingParty(); 
    var b = new UriBuilder(Request.Url) { Query = "" }; 
    var req = openid.CreateRequest(discoveryUri, b.Uri, b.Uri); 
    req.RedirectToProvider(); 
} 
} 

, но я до сих пор дальнейших сомнений в том, как получить имя пользователя, с помощью которого пользователь регистрируется для создания сеанса ... ??? Это может быть сделано я видел его где-то ...

+1

Имя пользователя (адрес электронной почты, скорее) будет возвращено вам после успешного входа в систему и перенаправления из Google. Пользователю будет предложено разрешить вашему приложению даже видеть адрес электронной почты (только один раз, после первого успешного входа в систему), и только после этого вы вернете пользователя и этот адрес электронной почты. Тем не менее, я не знаю, что это такое. –

+0

@Hari я до сих пор не нашел решение получить идентификатор пользователя после успешного входа ... ??? Можно ли получить идентификатор электронной почты? – Gunner

2

Вы должны проверить библиотеку OpenId для C#.

http://code.google.com/p/dotnetopenid/

Это даст вам хороший старт. Таким образом, пользователю не придется напрямую использовать свой пароль и будет перенаправлен провайдеру, который предоставит вам аутентификацию для вашего сайта.

0

Nah, Google не позволит вам это сделать. Вам нужно будет сделать что-то похожее на то, что делает StackOverflow (предоставить функции OpenID для аутентификации по адресу google.com).

+0

Некоторые вещи, такие как http://www.janrain.com/, могут сделать это для меня. только он сможет отправлять электронную почту с того же приложения asp.net – Gunner

+0

Я так не думаю - я просто смотрел демо-видео там, и страница входа в Google отображается во всплывающем окне. Таким образом, хотя вы можете, конечно, набирать текстовые поля uid/pwd на своей странице, заявляя, что они будут входить в Google, только дурак на самом деле вводит их там без проверки URL-адреса в первую очередь. Поэтому, даже если вам удастся снять это, я сомневаюсь, что у вас будет много пользователей. –

+0

Ответ, который я хотел, это – Gunner

Смежные вопросы