幾乎所有的SNS網站都有[邀請站外好友]加入本站這個功能當然我們正在開發的這個名為XXX的網站也不例外今天學習了一下把成果向大家做一簡單匯報
這個功能的關鍵點在於取得用戶的已有聯系人列表並發送邀請函(一般都是電子郵件的形式)在這篇文章裡只涉及怎麼樣取得MSN中聯系人信息如果大家有興趣我會把怎麼樣取得GmailYahoo等的聯系人信息代碼也都帖上來
首先我想到的是參照已有網站的實現方式如果開心網校內網FaceBook等
開心網校內網
開心網和校內網的實現方式大致相同都是輸入用戶名和密碼程序按照一定的數據格式POST到LIVE網站獲取Ticket然後取得聯系人的信息以下是屏幕截圖
以上兩個網站的共同點是都要求用戶輸入MSN的用戶名和密碼這樣有可能造成MSN帳戶信息洩漏雖然都說不會記錄或存儲你的密碼但誰敢保證呢即使真的不會存儲但用戶會有一種抵觸心理
FaceBook的實現與以上兩個網站截然不同它不要求用戶輸入密碼信息這樣用戶就會覺得爽多了請看下圖密碼框並不要求用戶填寫(Enable=false)
用戶點擊[Find Friends]後會轉向Live網站這樣用戶就可以放心大膽的輸入密碼了
點擊[Sign In]後會自動跳轉到FaceBook網站顯示用戶聯系人信息 如下圖所示
綜合考慮決定采用facebook的實現方式MSDN上查找了一下原來Microsoft發布了Window Live的一系列API其中有一塊是Contacts API好了那就開始寫代碼吧(paipaidi)?
第一步
申請一個微軟雲計算的一個Project訪問
ioning/Defaultaspx申請一個類型為Live Services的Project
Application ID:
C
Domain(s):
Return URL:
Secret Key:
nazgnMZRWbbgaleiDpvUhGFKBbLv
第二步
下載 Windows Live ID Delegated Authentication SDK DEMO網址為x?FamilyId=AABFDBDFAFFE&displaylang=en
其中有C#JavaPerlPHPPythonRubyVB等多種版本任你選擇
第三步
安裝下載的文件到指定目錄內默認為C:\Program Files\Windows Live ID\DelAuth
第四步
在IIS中新建一個虛擬目錄名稱為DelAuth
第五步
修改hosts文件 你可以修改一下C:\WINDOWS\system\drivers\etc中的hosts文件把映射到一個您剛才申請Project時填寫的域名
第六步
修改Sample中的WebConfig文件如下用申請來的ApplicationID和Secret Key替換文件中相應的值並根據你的主機及虛擬目錄名稱把ReturnUrl改為handleraspx Policyurl的值改為 原始的webConfig文件如下
第七步
把Sample中的Defaultaspx設置為首頁按如下界面中的URL打開網址
其中Click Here中的URL是動態構造的如果有興趣相應的構造代碼大家可以研究一下
點擊Click Here就轉向Live網站進行登錄登錄後自動返回到WebConfig中配置的returnUrl網址用戶登錄後我們可以通過代碼取得
WindowsLiveLoginConsentToken的值具體代碼如下
WindowsLiveLogin wll = new WindowsLiveLogin(true);
WindowsLiveLoginConsentToken token = wllProcessConsent(reqForm);
第八步
取得MSN中的聯系人信息
微軟提供了允許我們通過REST方式訪問contracts服務需要具備以下兩個參數
The Delegated Authentication token (DAT)即WindowsLiveLoginConsentToken
The Location ID (lid)可以通過WindowsLiveLoginConsentToken獲得
顯然我們前七步做的工作主要是獲得以上的兩個參數的值用戶登錄後
在returnUrl頁面中我們可以寫如下代碼
public string GetContacts(WindowsLiveLoginConsentToken ct)
string lid = ctLocationID;
string delegatedToken = ctDelegationToken;
// Construct the request URI
string uri = @L@ + lid + /rest/LiveContacts/Contacts/;
HttpWebRequest request = (HttpWebRequest)WebRequestCreate(uri);
requestUserAgent = Windows Live Data Interactive SDK;
requestContentType = application/xml; charset=utf;
requestMethod = GET;
// Add the delegation token to a request header
requestHeadersAdd(Authorization DelegatedToken dt=\ + delegatedToken + \);
//Issue the HTTP GET request to Windows Live Contacts
HttpWebResponse response = (HttpWebResponse)requestGetResponse();
//The response body is an XML stream Read the stream into an XmlDocument
XmlDocument contacts = new XmlDocument();
contactsLoadXml(new StreamReader(responseGetResponseStream())ReadToEnd());
//Use the document For example display contactsInnerXml
return contactsInnerXml;
//Close the response
//responseClose();
}
我們可以針對返回的XML字符串進行分析獲取你需要的Contact格式並加以利用
From:http://tw.wingwit.com/Article/program/net/201311/11677.html