現(xiàn)在很多網(wǎng)站都建立了完整的用戶賬戶系統(tǒng),基于這個系統(tǒng),用戶擴展其他應(yīng)用非常方便。比如有微軟outlook帳戶,可以登錄win8.可以登錄微軟郵箱,也可以登錄skype。同樣,一個AppleID可享受蘋果的所有服務(wù)。俗話說,一個賬號,到處用。對于企業(yè)來說,通常有網(wǎng)站的產(chǎn)品線,app,微信公眾號等。統(tǒng)一各產(chǎn)品線的賬戶系統(tǒng),實現(xiàn)賬戶到處使用的目標是非常必要的。網(wǎng)站和app使用相同的帳戶,不需要做任何額外的工作,客戶只要有用戶名密碼就可以登錄。對于微信公眾號,由于是基于微信公眾平臺的應(yīng)用,需要遵守平臺規(guī)則,需要做一些額外的工作來實現(xiàn)賬戶交換的目標。接下來我們來討論一下微信微信官方賬號用戶如何與網(wǎng)站用戶的賬號系統(tǒng)無縫對接。用戶關(guān)注微信微信官方賬號后,會有一些互動。在互動過程中,可能需要獲取用戶的身份信息(對應(yīng)網(wǎng)站的賬號信息),如在微信官方賬號下單、查詢訂單等。所以現(xiàn)在的問題是:對于同一用戶,我們?nèi)绾谓?strong>微信公眾號用戶(openid)與網(wǎng)站用戶(userid)對應(yīng)關(guān)系。這個過程叫綁定。綁定微信賬號為了簡化討論,我總結(jié)了兩個場景:1、用戶已注冊為我們的網(wǎng)站用戶,但尚未關(guān)注我們的微信公眾號;二、用戶未注冊,但已關(guān)注我們的微信微信官方賬號。以上兩種情況分別討論。場景一用戶已注冊為我們的網(wǎng)站用戶,但尚未關(guān)注我們的微信公眾號。如何方便用戶關(guān)注微信官方賬號,同時綁定用戶和微信微信官方賬號?自然會想到二維碼入口。近年來,二維碼得到了廣泛的應(yīng)用。微信二維碼的推廣應(yīng)用可以說是魚得水、微信二維碼支付、微信二維碼登錄、微信二維碼名片等。可以說,二維碼已經(jīng)成為O2O線上線下連接的重要環(huán)節(jié)。小馬哥也稱"二維碼是線上線下的關(guān)鍵入口"。在這里,用戶需要先在網(wǎng)站上登錄,然后在適當?shù)牡胤浇o出入口,比如個人設(shè)置。綁定過程如下:綁定微信賬號流程微信二維碼生成功能需要在這里使用:http://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html關(guān)于微信二維碼,官方文檔中這樣說:目前有2種類型的二維碼,它們是臨時二維碼和永久二維碼。前者有過期時間,有效期為30天(2592000秒),但可產(chǎn)生較多數(shù)量。后者沒有過期時間,數(shù)量較少(目前參數(shù)僅支持1-1萬個,即10萬個)。兩種二維碼適用于賬戶綁定、用戶來源統(tǒng)計等場景。兩種二維碼適用于賬戶綁定、用戶來源統(tǒng)計等場景。顯然,我們更適合使用臨時二維碼。用戶刷新頁面時,可以生成一次。因為二維碼可以帶來場景值(scene_id),當用戶掃描帶有場景值的二維碼時,微信服務(wù)器會將場景值推給我們自己的服務(wù)器。當我們得到場景值時,我們可以驗證和綁定邏輯。注:生成二維碼需要認證的服務(wù)號。一個完整的綁定過程應(yīng)該是這樣的:①用戶登錄網(wǎng)頁,點擊綁定微信賬號;②后臺使用微信接口,生成二維碼鏈接返回給前端顯示,并建立場景值A(chǔ)與用戶的對應(yīng)關(guān)系;③用戶掃描二維碼,點擊關(guān)注微信微信官方賬號(如果已經(jīng)關(guān)注,直接跳到④);④后臺接收微信服務(wù)器推送的場景值A(chǔ);⑤后臺根據(jù)場景值A(chǔ),查詢相應(yīng)的用戶ID(依賴于②建立的對應(yīng)關(guān)系);⑥建立用戶userid與微信用戶openid對應(yīng)關(guān)系;⑦將綁定成功提示推送到用戶微信客戶端;⑧通知前臺頁面,綁定已完成,刷新頁面,并返回一些微信賬號信息。完成綁定。完成綁定。其中,②在中間,建立場景值A(chǔ)與用戶之間的對應(yīng)關(guān)系用戶點擊綁定微信賬號時,我們可以在后臺分配臨時場景值A(chǔ)與用戶ID關(guān)系。對于用戶不多的網(wǎng)站,可以直接使用php中的apc緩存并設(shè)置過期時間(與臨時二維碼過期時間設(shè)置相同)。不要使用session存儲這種對應(yīng)關(guān)系是因為④是微信推送事件,不帶session可以使用信息redis這類緩存或DB來存儲。另,這里要使用臨時二維碼,數(shù)量上沒有限制,只有時間限制,前臺定時刷新即可。⑧中,因為http沒有推送機制,所以簡單的方法就是輪詢查詢,綁定是否已經(jīng)完成,綁定完成后再刷新頁面。綁定完成后,當用戶與我們的微信公眾號互動時,根據(jù)openid能找到對應(yīng)的userid,即完成身份識別。對于之前提到的下單,查詢訂單,都是可以實現(xiàn)的。整個綁定過程并不復(fù)雜,技術(shù)難度也不大。關(guān)鍵是思考。以上流程是用戶已經(jīng)在網(wǎng)頁上登錄,即注冊用戶。對于未登錄的情況,我們也可以在登錄頁面上生成二維碼,讓用戶用微信掃描。如果用戶已注冊,可以自動登錄,綁定網(wǎng)站賬號和微信賬號;如果用戶未注冊,網(wǎng)頁將跳轉(zhuǎn)到綁定賬號頁面。只要用戶輸入電子郵件密碼快速注冊,網(wǎng)站賬號和微信用戶的綁定也將完成。實現(xiàn)與上述類似的技術(shù)方案。場景二場景2,操作對用戶來說有點復(fù)雜,因為它需要用戶在微信客戶端的網(wǎng)頁上登錄/注冊。因此,如果注冊過程過于復(fù)雜繁瑣,則不建議使用。流程:用戶綁定賬戶流程上述綁定過程集成了注冊過程,因此看起來更為復(fù)雜。這并不難實現(xiàn)。我們關(guān)注安全問題,因為綁定賬戶涉及用戶的信息安全,并考慮兩個問題:1.如何防止鏈接被偽造?需要確保登錄/注冊鏈接是由我們自己的服務(wù)器生成的,其他人不能偽造。可參考微信驗證服務(wù)器地址的有效性:http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html。因此,更安全的登錄鏈接可以是這樣的:http://api.hello1010.com/wechat/login.html?openid=x1&signature=x2×tamp=x3&nonce=x4&echostr&=x5驗證簽名代碼:token值可以跟自己的微信公眾號后臺的一致,也可以換一個,建議換一個安全點。2、如何確保openid是可信的考慮:A用戶進入登錄頁面,將登錄鏈接復(fù)制到瀏覽器中openid用B用戶替換openid,用A用戶的賬號密碼登錄。這樣a用戶就可以了userid和B用戶的openid綁在一起顯然是不安全的。有很多解決方案,比如可以給出openid加密,用戶不能偽造加密后的加密方法openid。假如不想給openid在生成鏈接時,可以在服務(wù)器端建立加密openid與簽名signature如果用戶篡改了相應(yīng)的關(guān)系openid不能通過校驗。記住,永遠不要相信來自客戶端的信息。擴展應(yīng)用綁定完成后,我們可以做一些簡單的應(yīng)用。比如公司需要舉辦線下路演,需要報名參加,需要簽到。這是一個典型的現(xiàn)的典型例子O2O例子。流程如下:線下路演簽到流程綁定用戶子流程是場景二中的流程。這里不再討論報名互動,每個業(yè)務(wù)都不一樣。對于已完成綁定的用戶,他需要做的是通過微信注冊,然后掃描二維碼登錄,體驗相當流暢。
網(wǎng)站建設(shè)公司" />