< form id="form1" action="authOpenidlogin.aspx" runat="server" >
< asp:TextBox runat="server" ID="txtOpenId" Width="200" / >
< asp:Button runat="server" ID="btnLogon" Text="Login" OnClick="btnLogon_Click" / >
< script type="text/javascript" >
< !--
idselector_input_id = "txtOpenId";
-- >
< /script >
< /form >
asp.net:1.將下載的DotNetOpenId元件放至web的bin目錄 2.頁面加上下方程式
< script runat="server" >
protected void Page_Load(object sender, EventArgs e){
OpenIdRelyingParty openid = new OpenIdRelyingParty();
if (openid.Response != null) {
switch (openid.Response.Status) {
case AuthenticationStatus.Authenticated:
string email ="";
string userid ="";
long num = 0;
String openidname =openid.Response.ClaimedIdentifier;
if(openidname.IndexOf("myopenid.com")>0){
ClaimsResponse fetch = openid.Response.GetExtension(typeof(ClaimsResponse)) as ClaimsResponse;
if (fetch != null){
email = fetch.Email;
}
}else{
FetchResponse fetch = openid.Response.GetExtension
if (fetch != null){
email = fetch.GetAttribute(WellKnownAttributes.Contact.Email).Values.Count > 0 ? fetch.GetAttribute(WellKnownAttributes.Contact.Email).Values[0] : null;
}
}
userid = openid.Response.ClaimedIdentifier;
String openidsecret = "17Ball.net" ;
long atime=CurrentTimeMillis();
num = userid.GetHashCode() + atime;
String ftime=atime+"1";
String sig = "openid=" +openidname+ "&ts=" + ftime + openidsecret ;
String signature = GetMD5Hash(sig);
Response.Redirect("http://www.17ball.net/authLogin.asp?openid=" + Server.UrlEncode(openidname) + "&ts=" + ftime + "&sig=" + signature + "&em=" +email + "&num=" + num);
break;
case AuthenticationStatus.Canceled:
break;
case AuthenticationStatus.Failed:
break;
} }
if(Request["login"]=="google"){
txtOpenId.Text = "https://www.google.com/accounts/o8/id";
btnLogon_Click(sender, e);
}else if(Request["login"]=="yahoo"){
txtOpenId.Text = "http://yahoo.com/";
btnLogon_Click(sender, e);
}
}
void btnLogon_Click(object sender, EventArgs e){
OpenIdRelyingParty openid = new OpenIdRelyingParty();
IAuthenticationRequest req = openid.CreateRequest(txtOpenId.Text);
try{
if(txtOpenId.Text.IndexOf("myopenid.com")>0){
ClaimsRequest fetch = new ClaimsRequest();
fetch.Email = DemandLevel.Require;
req.AddExtension(fetch);
}else{
FetchRequest fetch = new FetchRequest();
fetch.AddAttribute(new AttributeRequest(WellKnownAttributes.Contact.Email, true));
req.AddExtension(fetch);
}
req.RedirectToProvider();
}catch (Exception ex){
// result.ErrorMessage = ex.Message;
}
}
< /script >
0 意見:
張貼意見