最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs微信開(kāi)發(fā)之授權(quán)登錄+獲取用戶信息

 更新時(shí)間:2019年03月17日 15:10:51   作者:xiadd  
這篇文章主要介紹了nodejs微信開(kāi)發(fā)之授權(quán)登錄+獲取用戶信息,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

上一篇:獲取access_token+自定義菜單

這部分代碼是之前就已經(jīng)完成了,但是考慮篇幅的問(wèn)題就和上篇分開(kāi)了,這部分相較前面的方式較為復(fù)雜一點(diǎn),但是也是很容易理解的。

這里簡(jiǎn)單介紹一下微信網(wǎng)頁(yè)授權(quán)。

微信網(wǎng)頁(yè)授權(quán)配置回調(diào)域名:

注:下面引自官方文檔

1、在微信公眾號(hào)請(qǐng)求用戶網(wǎng)頁(yè)授權(quán)之前,開(kāi)發(fā)者需要先到公眾平臺(tái)官網(wǎng)中的“開(kāi)發(fā) - 接口權(quán)限 - 網(wǎng)頁(yè)服務(wù) - 網(wǎng)頁(yè)帳號(hào) - 網(wǎng)頁(yè)授權(quán)獲取用戶基本信息”的配置選項(xiàng)中,修改授權(quán)回調(diào)域名。請(qǐng)注意,這里填寫的是域名(是一個(gè)字符串),而不是URL,因此請(qǐng)勿加 http:// 等協(xié)議頭;

2、授權(quán)回調(diào)域名配置規(guī)范為全域名,比如需要網(wǎng)頁(yè)授權(quán)的域名為:www.qq.com,配置以后此域名下面的頁(yè)面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以進(jìn)行OAuth2.0鑒權(quán)。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com無(wú)法進(jìn)行OAuth2.0鑒權(quán)。

比如:需要授權(quán)的網(wǎng)頁(yè)域名為http://xiadd.weixin.qq.com/demo,那么需要配置回調(diào)域名為xiadd.weixin.qq.com。其他域名同理。配置圖示如下:

在權(quán)限里找到這部分,點(diǎn)擊修改。


將回調(diào)域名改為自己需要的域名:


這樣回調(diào)域名就修改成功了。

授權(quán)登錄

關(guān)于授權(quán)登錄的各種參數(shù)細(xì)節(jié)這里就不多說(shuō)了,但是這里也有一個(gè)access_token需要注意一下,和全局緩存的那個(gè)注意不要搞混了(話說(shuō)tx為啥不做一下命名區(qū)分)。這里的access_token是oauth的一個(gè)憑證,全局緩存的那個(gè)是調(diào)用微信公眾平臺(tái)各個(gè)基礎(chǔ)接口所要用到的憑證。
具體而言,網(wǎng)頁(yè)授權(quán)流程分為四步:
1、引導(dǎo)用戶進(jìn)入授權(quán)頁(yè)面同意授權(quán),獲取code
2、通過(guò)code換取網(wǎng)頁(yè)授權(quán)access_token(與基礎(chǔ)支持中的access_token不同)
3、如果需要,開(kāi)發(fā)者可以刷新網(wǎng)頁(yè)授權(quán)access_token,避免過(guò)期
4、通過(guò)網(wǎng)頁(yè)授權(quán)access_token和openid獲取用戶基本信息
這里的第三步不是必須的,這里先不提,也就是授權(quán)登錄主要是三部分。引導(dǎo)用戶點(diǎn)擊相應(yīng)鏈接獲取code,code換區(qū)access_token,通過(guò)access_token去的相應(yīng)信息。

引導(dǎo)用戶獲取code

因?yàn)槭跈?quán)登錄的權(quán)限較高,所以微信平臺(tái)會(huì)對(duì)鏈接的順序進(jìn)行校驗(yàn),順序是固定的。鏈接格式如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

其中appid是固定的,就是公眾號(hào)的appid。
redirect_uri就是授權(quán)成功后需要跳轉(zhuǎn)到的鏈接。
response_type是固定的就是code。
scope就是授權(quán)權(quán)限,主要有兩種:snsapi_base (不彈出授權(quán)頁(yè)面,直接跳轉(zhuǎn),只能獲取用戶openid),snsapi_userinfo (彈出授權(quán)頁(yè)面,可通過(guò)openid拿到昵稱、性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶授權(quán),也能獲取其信息)。

這里的scope以snsapi_userinfo為例,獲取用戶的信息。點(diǎn)進(jìn)鏈接進(jìn)入到授權(quán)頁(yè)面。如圖:


授權(quán)后得到url形式如下。code就包含在url里:

這樣code就得到了。code只能使用一次,5分鐘未被使用自動(dòng)過(guò)期。

通過(guò)code換取網(wǎng)頁(yè)授權(quán)access_token

再次提醒,這里的access_token和全局緩存的access_token是不一樣的。具體返回參數(shù)請(qǐng)看文檔,這里不一一列出了。
得到code后,通過(guò)get請(qǐng)求https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code,參數(shù)分別為appid,appsecret,和前一步獲取的code,雖然這里可以通過(guò)瀏覽器進(jìn)行請(qǐng)求,但是因?yàn)榘踩?jí)別高,所以千萬(wàn)在服務(wù)端進(jìn)行請(qǐng)求。代碼如下:

//getWebToken.js
function getToken(code) {
 let reqUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?';
 let params = {
 appid: config.appId,
 secret: config.appSecret,
 code: code,
 grant_type: 'authorization_code'
 };

 let options = {
 method: 'get',
 url: reqUrl+qs.stringify(params)
 };
 console.log(options.url);
 return new Promise((resolve, reject) => {
 request(options, function (err, res, body) {
  if (res) {
  resolve(body);
  } else {
  reject(err);
  }
 })
 })
}

就是很簡(jiǎn)單的一個(gè)請(qǐng)求得到想要的數(shù)據(jù)。但是注意得到的數(shù)據(jù)是個(gè)字符串,需要進(jìn)行處理,響應(yīng)格式如下:

對(duì)于scope為snsapi_base的授權(quán),這里是最后一步,會(huì)返回openid。如果需要再進(jìn)行下一步。

拉取用戶信息

如果網(wǎng)頁(yè)授權(quán)作用域?yàn)閟nsapi_userinfo,則此時(shí)開(kāi)發(fā)者可以通過(guò)access_token和openid拉取用戶信息了。
請(qǐng)求方法
http:GET(請(qǐng)使用https協(xié)議) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
這里也很簡(jiǎn)單。直接看代碼:

function getUserInfo(AccessToken, openId) {
 let reqUrl = 'https://api.weixin.qq.com/sns/userinfo?';
 let params = {
 access_token: AccessToken,
 openid: openId,
 lang: 'zh_CN'
 };

 let options = {
 method: 'get',
 url: reqUrl+qs.stringify(params)
 };
 
 return new Promise((resolve, reject) => {
 request(options, function (err, res, body) {
  if (res) {
  resolve(body);
  } else {
  reject(err);
  }
 });
 })
}

具體響應(yīng)到網(wǎng)頁(yè)上如圖所示:

這樣就通過(guò)授權(quán)登錄拉取到了用戶信息。

github地址奉上:https://github.com/xiadd/shorthand 歡迎star

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析

    輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析

    這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析,本文是對(duì)第一節(jié)中簡(jiǎn)單服務(wù)器的代碼進(jìn)行分析總結(jié),需要的朋友可以參考下
    2014-12-12
  • Nodejs下使用gm圓形裁剪并合成圖片的示例

    Nodejs下使用gm圓形裁剪并合成圖片的示例

    本篇文章主要介紹了Nodejs下使用gm圓形裁剪并合成圖片的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • 如何從零開(kāi)始手寫Koa2框架

    如何從零開(kāi)始手寫Koa2框架

    這篇文章主要介紹了如何從零開(kāi)始手寫Koa2框架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 一文教你如何使用Node進(jìn)程管理工具-pm2

    一文教你如何使用Node進(jìn)程管理工具-pm2

    這篇文章詳細(xì)介紹了如何使用node進(jìn)程管理工具pm2,文中代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以借鑒一下
    2023-04-04
  • nodeJS進(jìn)程管理器pm2的使用

    nodeJS進(jìn)程管理器pm2的使用

    這篇文章主要介紹了nodeJS進(jìn)程管理器pm2的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • node.js監(jiān)聽(tīng)文件變化的實(shí)現(xiàn)方法

    node.js監(jiān)聽(tīng)文件變化的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于node.js監(jiān)聽(tīng)文件變化的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 如何制作一個(gè)Node命令行圖像識(shí)別工具

    如何制作一個(gè)Node命令行圖像識(shí)別工具

    這篇文章主要介紹了如何制作一個(gè)Node命令行圖像識(shí)別工具,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Node.js中的HTTP請(qǐng)求與響應(yīng)詳解

    Node.js中的HTTP請(qǐng)求與響應(yīng)詳解

    本文詳細(xì)講解了Node.js中的HTTP請(qǐng)求與響應(yīng),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Nodejs 復(fù)制文件/文件夾的方法

    Nodejs 復(fù)制文件/文件夾的方法

    這篇文章主要介紹了Nodejs 復(fù)制文件/文件夾的方法,需要的朋友可以參考下
    2017-08-08
  • npm鏡像源更改后不生效(附淘寶鏡像源)

    npm鏡像源更改后不生效(附淘寶鏡像源)

    淘寶的NPM鏡像源registry.npm.taobao.org已經(jīng)過(guò)期,導(dǎo)致npm?install時(shí)出現(xiàn)證書過(guò)期錯(cuò)誤,更換鏡像源至registry.npmmirror.com后,如果仍出現(xiàn)錯(cuò)誤,可能是項(xiàng)目中的package-lock.json或.npmrc文件鎖定了舊的鏡像源,本文就來(lái)介紹一下解決方法,感興趣的可以了解一下
    2024-10-10

最新評(píng)論

景洪市| 许昌市| 呼图壁县| 清流县| 镇巴县| 张家口市| 峨眉山市| 苗栗市| 闸北区| 吉安县| 黄石市| 垫江县| 饶平县| 丹棱县| 临夏县| 岗巴县| 谢通门县| 邵武市| 新乡县| 新邵县| 平江县| 禹城市| 宜州市| 兴国县| 宁海县| 柳林县| 泽库县| 疏勒县| 湄潭县| 嘉禾县| 绥棱县| 卓尼县| 溆浦县| 高清| 岑巩县| 龙南县| 轮台县| 泗水县| 喀什市| 洛阳市| 鄂伦春自治旗|