前端自學(xué)之路,在 React 構(gòu)建的網(wǎng)頁中實現(xiàn)微信登錄

所有文章的源碼將會被上傳到github 倉庫https://github.com/kurryluo/LearningByMyself,不用經(jīng)過授權(quán)铸屉,即可轉(zhuǎn)載所有文章和代碼。

這篇文章將教會你:

1.如何實現(xiàn)微信帳號授權(quán)登錄網(wǎng)站的前端部分切端。2.怎樣模仿別人的網(wǎng)頁抬探,做出想要的效果。

在微信開放平臺上申請網(wǎng)站應(yīng)用

微信開放平臺帆赢,是一個開放給企業(yè)或個人的技術(shù)平臺小压。借助這個平臺,我們可以開發(fā)與微信相關(guān)產(chǎn)品椰于,比如微信號二次開發(fā)怠益、手機應(yīng)用、網(wǎng)站應(yīng)用瘾婿、小程序蜻牢、管理公眾號的第三方平臺。

在注冊偏陪、完善抢呆、認證完開發(fā)者資質(zhì)后,我們需要在管理中心創(chuàng)建一個網(wǎng)站應(yīng)用笛谦。溫馨提示:審核的周期規(guī)定是7天抱虐,請在開啟項目前申請,以節(jié)約時間饥脑。

實現(xiàn)最簡單的網(wǎng)頁授權(quán)登錄

微信提供了兩種網(wǎng)頁登錄的方式恳邀,第一種很簡單,如下圖所示灶轰,這里是官方教程谣沸。

微信官方提供的登錄窗口

舉個栗子:

https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

參數(shù)列表

需要注意的幾點:

  • appid 是應(yīng)用的唯一標(biāo)識,后端使用的 appid 應(yīng)當(dāng)和前端使用的一致笋颤,否則會報錯乳附。
  • redirect_uri 是回調(diào)地址。什么意思呢伴澄?因為登錄是依靠微信進行的赋除,微信的數(shù)據(jù)庫中有這個人存在才允許他登錄,所以微信會進行驗證秉版,如果通過了驗證贤重,微信就會給出一個 code(密鑰),接在回調(diào)地址后面清焕。比如 https://passport.yhd.com/wechat/callback.do并蝗,這個網(wǎng)址作為回調(diào)地址祭犯,微信驗證通過后,瀏覽器的地址欄變?yōu)?strong>https://passport.yhd.com/wechat/callback.do?code=123456789滚停。
  • 回調(diào)地址需要被編碼沃粗,推薦常用的工具——站長工具
    站長工具界面截圖
  • state 怎么用,一般 state 可以做三件事键畴,一是最盅,安全機制的補充,判斷登錄是否合法起惕,就像官方教程中說的那樣涡贱。二是,用于用戶身份的判定惹想,state = 1 時是老師的賬號登錄问词,state = 2 時是學(xué)生登錄。三是嘀粱,用于判斷設(shè)備的型號激挪,手機網(wǎng)頁的靜默登錄和 PC 端登錄可以利用這個做統(tǒng)一處理,不用再另外寫一個接口锋叨。

這里使用 1 號店的微信登錄作為例子:

  • appid:wxbdc5610cc59c1631
  • redirect_uri: https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do (已經(jīng)編碼過的)
  • response_type:code
  • scope:snsapi_login
  • state:3d6be0a4035d839573b04816624a415e

完整的登錄地址:

https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect

上面這個地址可以放在 a 標(biāo)簽里垄分,用戶點擊即跳轉(zhuǎn)到微信提供的登錄頁面。以下代碼就可以實現(xiàn)娃磺。

<a >直接跳轉(zhuǎn)到微信提供的網(wǎng)頁</a>

模仿別人網(wǎng)站做出更友好的登錄界面

微信提供的默認登錄有一個黑框薄湿,愛美之心人皆有之,這不能忍豌鸡。所以嘿般,我找到一個用微信登錄的網(wǎng)站,想看看別人是怎么實現(xiàn)的涯冠。

我找到的是知識星球,原來名字叫做小密圈逼庞。首頁登錄長這樣:

知識星球登錄效果圖

打開控制臺看看有什么發(fā)現(xiàn):

控制臺查看網(wǎng)站源碼

可以發(fā)現(xiàn)知識星球的攻城獅們把原來的黑框網(wǎng)頁用<iframe>標(biāo)簽壓縮蛇更,再經(jīng)過精心的裁剪缎岗,拿到二維碼而已掌呜,這樣就可以實現(xiàn) 微信 & 賬號 兩不誤登錄希太。

直接拷貝代碼到自己的代碼中修改译打,替換 src 中的登錄地址(就是黑框網(wǎng)頁登錄的那個地址)叉钥,為了方便日后重復(fù)使用亮蛔,我用 React 寫了一個可以復(fù)用的組件陨仅,使用 antd 的 modal 組件實現(xiàn)遮幕效果壁袄。

主要的代碼:

      <Modal
        visible={open}
        onCancel={this.props.handleClose}
        footer={null}
        closable
      >
        <div className={styles.wechatLoginSec}>
          <div className={classnames(styles.imageSec, styles[toggleClass])}></div>
          <div className={styles.inputSec}>
            <iframe className={styles.nlogin_iframe}
                    frameBorder="0"
                    sandbox="allow-scripts allow-same-origin allow-top-navigation"
                    scrolling="no"
                    src="https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect"></iframe>
          </div>
        </div>
      </Modal>

最終效果如動圖:

效果演示圖

歡迎大家關(guān)注微信公眾號:FrontEndVisDev

不僅有前端和可視化司倚,還有我的創(chuàng)業(yè)經(jīng)驗

個人網(wǎng)站:http://kurryluo.github.io_

各個分享平臺的 KurryLuo 都是在下豆混。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末篓像,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子皿伺,更是在濱河造成了極大的恐慌员辩,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸵鸥,死亡現(xiàn)場離奇詭異奠滑,居然都是意外死亡,警方通過查閱死者的電腦和手機妒穴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門宋税,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讼油,你說我怎么就攤上這事杰赛。” “怎么了汁讼?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵淆攻,是天一觀的道長。 經(jīng)常有香客問我嘿架,道長瓶珊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任耸彪,我火速辦了婚禮伞芹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝉娜。我一直安慰自己唱较,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布召川。 她就那樣靜靜地躺著南缓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荧呐。 梳的紋絲不亂的頭發(fā)上汉形,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音倍阐,去河邊找鬼概疆。 笑死,一個胖子當(dāng)著我的面吹牛峰搪,可吹牛的內(nèi)容都是我干的岔冀。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼概耻,長吁一口氣:“原來是場噩夢啊……” “哼使套!你這毒婦竟也來了罐呼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤童漩,失蹤者是張志新(化名)和其女友劉穎弄贿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矫膨,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡差凹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了侧馅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片危尿。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖馁痴,靈堂內(nèi)的尸體忽然破棺而出谊娇,到底是詐尸還是另有隱情,我是刑警寧澤罗晕,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布济欢,位于F島的核電站,受9級特大地震影響小渊,放射性物質(zhì)發(fā)生泄漏法褥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一酬屉、第九天 我趴在偏房一處隱蔽的房頂上張望半等。 院中可真熱鬧,春花似錦呐萨、人聲如沸杀饵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽切距。三九已至,卻和暖如春惨远,著一層夾襖步出監(jiān)牢的瞬間蔚舀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工锨络, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狼牺。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓羡儿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親是钥。 傳聞我的和親對象是個殘疾皇子掠归,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容