微信也是一個(gè)瀏覽器
首先,對(duì)于微信**者來說,把微信稱作是一個(gè)瀏覽器是絲毫沒有問題的。如果你現(xiàn)在是在使用微信來閱讀我現(xiàn)在的這篇文章微兒是誰,那么你就是在把微信當(dāng)作一個(gè)web瀏覽器來使用,因?yàn)檫@篇文章也是寫在一個(gè)網(wǎng)頁(yè)上的。
那么網(wǎng)頁(yè)授權(quán)是什么?話還得從頭說起...
在微信上瀏覽一個(gè)網(wǎng)頁(yè)的時(shí)候發(fā)生了什么
既然微信是一個(gè)瀏覽器,那么理論上所有的網(wǎng)頁(yè),都是可以使用微信來訪問的。假如一個(gè)公眾號(hào)**者想要向自己的用戶提供一些網(wǎng)頁(yè)服務(wù),那么直接把網(wǎng)址鏈接放在公眾號(hào)的菜單按鈕或者圖文推送就可以了。
但是好像少了一點(diǎn)什么...
現(xiàn)在一個(gè)鐵桿粉絲通過公眾號(hào)來訪問網(wǎng)頁(yè),那么問題來了:
**者:你是誰啊?
用戶:你的鐵桿粉絲啊!不是說粉絲找你就有小禮物嗎?
**者:你誰???憑什么知道你是鐵桿粉絲啊?
對(duì),少了一個(gè)用戶ID.
上一篇文章我們提到過OpenID是一個(gè)用戶在微信公眾號(hào)里面的唯一身份標(biāo)識(shí),那么最合理的解決方案就是使用OpenID來標(biāo)識(shí)用戶。最早的解決方案是這樣的:
用戶點(diǎn)擊公眾號(hào)菜單微信***告知**者:
大哥,有個(gè)用戶點(diǎn)咱們菜單了,這家伙OpenID是xxxx
**者告訴微信***:
給他一個(gè)url讓他訪問,順便把他**寫在url里面
4.用戶獲得一個(gè)帶有自己身份**的定制的url,例如:
隔壁老王xxxx
5.用戶使用定制的url訪問網(wǎng)頁(yè)
**者:哎呦這是誰???來就來唄還帶東西!哦原來是老王啊,失敬失敬!來給您一個(gè)cookie微兒是誰,下次來不用帶東西我都知道是你!
但是這種做法有一些風(fēng)險(xiǎn),第一是cookie經(jīng)常會(huì)被老王弄丟,第二條就更嚴(yán)重了:甭管是誰,只要通過“隔壁老王xxxx”這個(gè)網(wǎng)址來訪問,都會(huì)被當(dāng)成隔壁老王來對(duì)待。
那么怎么做才能比較安全呢?總不能讓用戶再單獨(dú)注冊(cè)一個(gè)**吧?不是說好了 OpenID是唯一標(biāo)識(shí)嗎?還要再注冊(cè)一個(gè)**來登錄?人與人之間最重要的信任呢?
這時(shí)候就需要有個(gè)東西來解決問題了,我們今天的主角——網(wǎng)頁(yè)授權(quán).
網(wǎng)頁(yè)授權(quán)正傳
網(wǎng)頁(yè)授權(quán)是專門用來解決上述問題的,除此之外,這哥們兒還帶來了許多額外的小玩意兒,我們慢慢說來。
首先,網(wǎng)頁(yè)加載了網(wǎng)頁(yè)授權(quán)之后,用戶使用微信來訪問網(wǎng)頁(yè),交互**是這樣的:
網(wǎng)頁(yè)授權(quán):大哥,人來訪問你的網(wǎng)頁(yè)了,OpenID是xxxx,你看著辦吧!
以上是普通青年模式,文藝青年略有不同,還想要獲得用戶的更多**,例如昵稱、頭像、*別等等,這個(gè)時(shí)候微信網(wǎng)頁(yè)授權(quán)有點(diǎn)猶豫:
我還是先問問用戶吧...
所以,如果**者想要獲得更多的用戶**,則會(huì)先跳轉(zhuǎn)到微信的一個(gè)頁(yè)面,這個(gè)頁(yè)面你肯定不陌生,它長(zhǎng)這樣:
微信授權(quán)登錄
好,現(xiàn)在如果用戶點(diǎn)擊了確認(rèn)登錄按鈕,網(wǎng)頁(yè)就可以獲得用戶的各項(xiàng)公開**了。
如果**者想獲得用戶的更多**,比如說手機(jī)號(hào)碼、家庭住址、電子郵箱,對(duì)不起,這個(gè)網(wǎng)頁(yè)授權(quán)幫不上忙。
微信網(wǎng)頁(yè)**的更多小玩意兒
除了通過網(wǎng)頁(yè)授權(quán)獲取用戶**之外,微信還為前端**者提供了一些小工具,包括獲取用戶地理位置、讀取用戶*地圖片或調(diào)用攝像頭拍照、調(diào)用話筒采集聲音、獲取網(wǎng)絡(luò)狀態(tài)、顯示或隱藏頁(yè)面分享按鈕、調(diào)用微信掃一掃*能、調(diào)用微信卡券、微信支付、獲取用戶頁(yè)面分享事件等一系列*能。這些被稱為JS-SDK。下一篇文章,將會(huì)講述JS-SDK的一些知識(shí)。