自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析微信內(nèi)Web App自動(dòng)登錄

移動(dòng)開(kāi)發(fā)
最初是在Tower.im的公眾號(hào)里見(jiàn)到了WebApp自動(dòng)登錄,想做一個(gè)同樣效果的。那時(shí)候?qū)娞?hào)開(kāi)發(fā)不熟悉,問(wèn)了一些人也說(shuō)的稀里糊涂的,文檔又亂,最后花了好長(zhǎng)時(shí)間才實(shí)現(xiàn)。這個(gè)功能需要的接口是「網(wǎng)頁(yè)授權(quán)獲取用戶(hù)基本信息」,需要認(rèn)證企業(yè)號(hào)才能使用。如果沒(méi)有權(quán)限的話(huà)可以試一下微信之門(mén),我也只是知道這個(gè)東西,從來(lái)沒(méi)試過(guò)。

[[147316]]

最初是在Tower.im的公眾號(hào)里見(jiàn)到了WebApp自動(dòng)登錄,想做一個(gè)同樣效果的。那時(shí)候?qū)娞?hào)開(kāi)發(fā)不熟悉,問(wèn)了一些人也說(shuō)的稀里糊涂的,文檔又亂,***花了好長(zhǎng)時(shí)間才實(shí)現(xiàn)。這個(gè)功能需要的接口是「網(wǎng)頁(yè)授權(quán)獲取用戶(hù)基本信息」,需要認(rèn)證企業(yè)號(hào)才能使用。如果沒(méi)有權(quán)限的話(huà)可以試一下微信之門(mén),我也只是知道這個(gè)東西,從來(lái)沒(méi)試過(guò)。

基本的思路是通過(guò)公眾號(hào)OAuth API獲取用戶(hù)微信的openid。***次使用的時(shí)候讓用戶(hù)登錄,然后在數(shù)據(jù)庫(kù)里把openid和自己應(yīng)用的userid對(duì)應(yīng)起來(lái)。以后獲得用戶(hù)的openid之后就可以自動(dòng)登錄到對(duì)應(yīng)的用戶(hù)上。

我的Web App是用AngularJS實(shí)現(xiàn)的SPA,登錄之后獲取一個(gè)token放在localStorage,給后端發(fā)請(qǐng)求的時(shí)候,把token寫(xiě)在Header的Authorization里。

這個(gè)過(guò)程中不需要使用Cookie,但是為了減少跳轉(zhuǎn)次數(shù),還是用了Cookie。我把和微信登錄相關(guān)的功能寫(xiě)在了幾個(gè)PHP單頁(yè)里,用一個(gè)redirect.php做入口,把要跳轉(zhuǎn)的頁(yè)面放在參數(shù)里,由redirect.php檢查用戶(hù)是否已經(jīng)獲得了token,在獲取到token之后跳轉(zhuǎn)到目標(biāo)頁(yè)面。

登錄流程圖如下:

1952533049.jpg

其中和微信有關(guān)的操作就是第二行和第三行。

微信的OAuth認(rèn)證方式是,讓用戶(hù)在微信客戶(hù)端里打開(kāi)這樣一個(gè)地址https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect,微信認(rèn)證服務(wù)器會(huì)引導(dǎo)用戶(hù)跳轉(zhuǎn)到你指定的REDIRECT_URI,并且在該URL后面加上一個(gè)CODE參數(shù)。

例如,想在http://example.com/redirect.php?type=post頁(yè)面獲得用戶(hù)的信息,就在頁(yè)面內(nèi)使用isset($_GET['code'])判斷是否存在code參數(shù)。

如果不存在,就讓用戶(hù)訪(fǎng)問(wèn)https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3a%2f%2fexample.com%2fredirect.php%3ftype%3dpost&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect。(注意把url作為參數(shù)時(shí)要經(jīng)過(guò)UrlEncode)

微信服務(wù)器會(huì)把用戶(hù)重定向到http://example.com/redirect.php?type=post&code=CODE。開(kāi)發(fā)者就可以從url參數(shù)中獲得CODE了。

然后開(kāi)發(fā)者就可以拿著這個(gè)CODE,去https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code換取用戶(hù)的openid。

拿到openid之后就可以判斷用戶(hù)是否綁定過(guò),并進(jìn)行下一步操作了。

如果需要用戶(hù)的昵稱(chēng)、頭像等更多信息,需要將***個(gè)url中的scope參數(shù)改為snsapi_userinfo,詳細(xì)信息可以看微信的開(kāi)發(fā)文檔。

責(zé)任編輯:倪明 來(lái)源: 貝葉書(shū)
相關(guān)推薦

2011-07-01 13:29:15

2011-04-06 13:39:18

2013-04-09 23:52:29

微信公眾平臺(tái)技巧

2013-07-16 10:57:09

微信云端

2013-04-10 13:07:40

微信公眾平臺(tái)Web App

2023-03-12 15:25:37

2024-11-04 09:04:20

2021-10-22 21:22:40

微信解散群聊移動(dòng)應(yīng)用

2018-02-07 08:18:23

微信微信6.6.2刪除好友

2021-10-19 08:07:21

微信小程序代碼

2013-08-12 09:53:37

Android微信5.Web App平臺(tái)微信公共賬號(hào)

2009-09-04 17:58:38

C# Web Brow

2009-07-28 15:53:43

ASP.NET Web

2009-01-16 14:08:42

PHP開(kāi)發(fā)Web應(yīng)用執(zhí)行效率

2021-09-24 15:00:26

微信PC電腦移動(dòng)應(yīng)用

2015-11-05 16:48:18

android源碼登陸界面

2014-12-18 13:40:16

Web AppHybrid AppNative App

2019-09-25 17:12:44

2021-03-05 06:39:54

指紋Web識(shí)別

2015-10-13 09:15:18

App登錄模塊設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)