Discuz!NT 3與asp.net 整合的實(shí)例教程
更新時(shí)間:2009年11月11日 01:01:32 作者:
本次整合只針對(duì)NETSNS中的代碼做了少許修改,完成了基本的和論壇同步注冊(cè),登陸和注銷(xiāo),信息獲取,信息修改。為的是給各位Discuz!NT API愛(ài)好者做一個(gè)簡(jiǎn)單的API事例,供大家參考。
如果編碼方面有不嚴(yán)謹(jǐn)?shù)牡胤?,還希望各位多多包涵,并給出中肯的意見(jiàn)。
整合需要在原項(xiàng)目中添加由Discuz!NT提供的
DiscuzToolkit語(yǔ)言包(c#)
另外為了方便整合,我還自己寫(xiě)了一個(gè)簡(jiǎn)單的項(xiàng)目DNTAddNETSNS,用來(lái)對(duì)Discuz!NT和SNS做一些簡(jiǎn)單的粘合。
現(xiàn)在向大家展示一下涉及API調(diào)用的一些代碼片段:
//之間為DNT的整合代碼
Try
{
Discuz.Toolkit.DiscuzSession ds = ConformityHandler.InitDiscuzSession();
ds.Register(ConformityHandler.CreateDiscuzNTUsername(ui.Email),ui.Password, ui.Email, false);
ret = User.Register(ui);//sns注冊(cè),獲取注冊(cè)信息
}
catch(Discuz.Toolkit.DiscuzException d)
{
if (d.ErrorCode == 109)
{
ret = EnumRegister.EmailRepeat;
}
}
//
如上是利用DiscuzToolkit中的方法注冊(cè)用戶(hù)的一個(gè)實(shí)例。(源碼在Register.aspx.cs中)
涉及到用戶(hù)的安全信息的操作,需要獲取AuthToken,獲取AuthToken需要請(qǐng)求論壇的login.aspx?api_key=[key],然后論壇會(huì)通過(guò)GET形式返回給設(shè)置好的Callback地址一個(gè)AuthToken,整合時(shí)需要使用AuthToken的地方非常多,然而callback地址只能設(shè)置一個(gè),針對(duì)此情況,我又專(zhuān)門(mén)新建了一個(gè)頁(yè)面dntapihandler.aspx,此頁(yè)面沒(méi)有內(nèi)容,只用來(lái)做callback中轉(zhuǎn),即在Discuz!NT中設(shè)置callback地址為dntapihandler.aspx。然后根據(jù)next參數(shù)確定最終返回的應(yīng)用程序頁(yè)面。
最后列出來(lái)被添加過(guò)整合代碼的頁(yè)面,方便大家看源碼。
web.config
Global.asax
Register.aspx
User/ default.aspx
Login.aspx
Logout.aspx
AccountSet.aspx
UserBase.aspx
如上的頁(yè)面有的只改動(dòng)了其.CS文件,有的都有修改。
如果想使用此整合項(xiàng)目,需要按照SNS的安裝說(shuō)明安裝部署。而且為了實(shí)現(xiàn)同步登錄(由于SNS并沒(méi)有API,所以論壇方無(wú)法控制SNS的登錄),需要修改一個(gè)Discuz!NT模板login.htm,在里面添加如下代碼。
<%csharp%>
If(Request["api_key"]==null&&Request.Form["username"]!="admin")
Response.Redirect(【SNS的登錄頁(yè)面路徑】);
<%/csharp%>
點(diǎn)擊下載源碼 http://xiazai.jb51.net/200911/yuanma/dnt_netsns_src.zip
整合需要在原項(xiàng)目中添加由Discuz!NT提供的
DiscuzToolkit語(yǔ)言包(c#)
另外為了方便整合,我還自己寫(xiě)了一個(gè)簡(jiǎn)單的項(xiàng)目DNTAddNETSNS,用來(lái)對(duì)Discuz!NT和SNS做一些簡(jiǎn)單的粘合。
現(xiàn)在向大家展示一下涉及API調(diào)用的一些代碼片段:
復(fù)制代碼 代碼如下:
//之間為DNT的整合代碼
Try
{
Discuz.Toolkit.DiscuzSession ds = ConformityHandler.InitDiscuzSession();
ds.Register(ConformityHandler.CreateDiscuzNTUsername(ui.Email),ui.Password, ui.Email, false);
ret = User.Register(ui);//sns注冊(cè),獲取注冊(cè)信息
}
catch(Discuz.Toolkit.DiscuzException d)
{
if (d.ErrorCode == 109)
{
ret = EnumRegister.EmailRepeat;
}
}
//
如上是利用DiscuzToolkit中的方法注冊(cè)用戶(hù)的一個(gè)實(shí)例。(源碼在Register.aspx.cs中)
涉及到用戶(hù)的安全信息的操作,需要獲取AuthToken,獲取AuthToken需要請(qǐng)求論壇的login.aspx?api_key=[key],然后論壇會(huì)通過(guò)GET形式返回給設(shè)置好的Callback地址一個(gè)AuthToken,整合時(shí)需要使用AuthToken的地方非常多,然而callback地址只能設(shè)置一個(gè),針對(duì)此情況,我又專(zhuān)門(mén)新建了一個(gè)頁(yè)面dntapihandler.aspx,此頁(yè)面沒(méi)有內(nèi)容,只用來(lái)做callback中轉(zhuǎn),即在Discuz!NT中設(shè)置callback地址為dntapihandler.aspx。然后根據(jù)next參數(shù)確定最終返回的應(yīng)用程序頁(yè)面。
最后列出來(lái)被添加過(guò)整合代碼的頁(yè)面,方便大家看源碼。
復(fù)制代碼 代碼如下:
web.config
Global.asax
Register.aspx
User/ default.aspx
Login.aspx
Logout.aspx
AccountSet.aspx
UserBase.aspx
如上的頁(yè)面有的只改動(dòng)了其.CS文件,有的都有修改。
如果想使用此整合項(xiàng)目,需要按照SNS的安裝說(shuō)明安裝部署。而且為了實(shí)現(xiàn)同步登錄(由于SNS并沒(méi)有API,所以論壇方無(wú)法控制SNS的登錄),需要修改一個(gè)Discuz!NT模板login.htm,在里面添加如下代碼。
復(fù)制代碼 代碼如下:
<%csharp%>
If(Request["api_key"]==null&&Request.Form["username"]!="admin")
Response.Redirect(【SNS的登錄頁(yè)面路徑】);
<%/csharp%>
點(diǎn)擊下載源碼 http://xiazai.jb51.net/200911/yuanma/dnt_netsns_src.zip
相關(guān)文章
.net?程序通過(guò)?crontab?無(wú)法啟動(dòng)手動(dòng)執(zhí)行腳本啟動(dòng)的方法
.net 網(wǎng)關(guān)程序需要設(shè)置定時(shí)重啟,按照日常操作先把正在運(yùn)行的 PID kill 掉后,再執(zhí)行啟動(dòng)服務(wù)。通過(guò)腳本無(wú)法啟動(dòng),試著把 .net 程序?qū)懗煞?wù)后,發(fā)現(xiàn)是可以正常重啟的,本文給大家介紹下.net 程序通過(guò) crontab 無(wú)法啟動(dòng)手動(dòng)執(zhí)行腳本啟動(dòng),感興趣的朋友一起看看吧2021-12-12ASP.NET筆記之Session、http、web開(kāi)發(fā)原則、xss漏洞的詳細(xì)介紹
本篇文章小編為大家介紹,ASP.NET筆記之Session、http、web開(kāi)發(fā)原則、xss漏洞詳細(xì)。需要的朋友參考下2013-04-04Visual studio 2017如何發(fā)布dotnet core到docker
這篇文章主要介紹了Visual studio 2017如何發(fā)布dotnet core到docker的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04.net采用ajax實(shí)現(xiàn)郵箱注冊(cè)和地區(qū)選擇實(shí)例
這篇文章主要介紹了.net采用ajax實(shí)現(xiàn)郵箱注冊(cè)和地區(qū)選擇的方法,以實(shí)例形式詳細(xì)講述了.net采用ajax的技巧,非常實(shí)用,需要的朋友可以參考下2014-10-10asp.net dataview做無(wú)限極分類(lèi)的又一用法
通??吹絼e人以及自己以前在綁定無(wú)限極分類(lèi)的時(shí)候,總是需要多次連接數(shù)據(jù)庫(kù),這樣覺(jué)得造成了資源的浪費(fèi),然后我想一次把所有數(shù)據(jù)先取出來(lái)(類(lèi)型不是很多的情況),這樣可以節(jié)省服務(wù)器的開(kāi)銷(xiāo)。2009-11-11