2012-02-08 23 views
-1

ユーザー名とパスワードの2つのテキストボックスがあります。ユーザーは自分の会社のメールIDとパスワードを入力します(ユーザー名とパスワードはgoogle、webserverはgoogleです)。 ASP.netのウェブサイト。ユーザー名とパスワードのセッションを作成してください。私は同じGmailの資格情報を使用してasp.net Webサイトから電子メールを送信できるようにしておきたいと思います。ASP.netのウェブサイトの認証のためのGmail資格情報

+0

多分...私はどこかでそれを見ている行うことができます重複: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からリダイレクトされた後に返されます。ユーザーには、google.comであなたのアプリにメールアドレス(最初のログインが成功した後に1回のみ)が表示されるように頼まれます。その後、そのユーザーとそのメールアドレスが返されます。しかし、私はそれの専門性を知らない。 –

+0

@ハリー私はまだ成功したログインの後にユーザーの電子メールIDを取得するための解決策を見つけられませんでした... ???電子メールIDを取得することは可能ですか? – Gunner

2

C#のOpenIdライブラリをチェックしてください。

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

これはあなたの良いスタートを与えます。この方法では、ユーザーは自分のパスワードを直接使用する必要はなく、サイトの認証を与えるプロバイダにリダイレクトされます。

0

ナー、Googleはあなたにそれをさせません。あなたはStackOverflowがやっていることに似た何かをしなければならないでしょう( google.comで認証するOpenID機能を提供する)。

+0

http://www.janrain.com/のようなものは私のためにそれをすることができます。彼は同じasp.netアプリケーションから電子メールを送ることができます – Gunner

+0

私はそうは思わない - 私はそこでデモビデオを見て、Googleのログインページはポップアップで表示されます。だから、あなたは確かにあなたのページにテキストボックスをuid/pwd彼らがグーグルでログインすると主張することができますが、愚か者だけが実際にURLをチェックw/oそこに入力されます。だから、たとえそれを取り除くことができたとしても、私はあなたが多くのユーザーを持つだろうとは思わない。 –

+0

私が欲しかった答えは – Gunner

関連する問題