node 微信授权 获取openid
生活随笔
收集整理的這篇文章主要介紹了
node 微信授权 获取openid
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
node獲取微信授權拿到openid
?
需要了解的網站
? 1.微信授權。
先說一下流程(一張圖代替所有):
流程步驟:
?1.用戶同意,獲取code。
?2.通過code獲取網頁授權access_token.
?3.獲取用戶信息。
開始搞事情:
這是我的路由結構。
const Koa = require('koa') const app = new Koa() const path = require('path') const route = require('koa-route'); const static = require('koa-static'); const keyBody = require('koa-body')// routes const { oauth } = require('./routes/accredit/oauth'); const { token } = require('./routes/accredit/token'); const rootPath = path.join(__dirname + '/View') const _static = static(rootPath)// 中間件 const logger = async(ctx, next) => {const rt_start = Date.now()await next()const rt_end = Date.now()ctx.set('X-Response-Time', `${rt_end - rt_start}ms`);console.log(ctx.request.method, ctx.url, `${rt_end - rt_start}ms`) }app.use(_static) // 靜態資源 app.use(keyBody()) // req body數據獲取 (非參數序列化) app.use(logger) // 日志// page route app.use(route.get('/oauth', oauth)); //授權 app.use(route.get('/token', token)); //獲取openid app.listen(8088, (err) => {if (err) { console.error(err) }console.log('Listening At:', 8088) }?
?1.在APP中訪問oauth獲取code
var config = require('./../config'); var request = require('request'); /* 微信網頁授權 */ const oauth = async(ctx, next) => {const { request: req, response: res } = ctx;var AppID = config.AppID;var AppSecret = config.AppSecret;// 第一步:用戶同意授權,獲取codevar Router = 'jy';// 這是編碼后的地址var return_uri = config.return_uri + Router;var scope = 'snsapi_base';// snsapi_userinfo可以獲取用戶信息與token與openid// snsapi_base只能獲取到token與openidres.redirect('https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + AppID + '&redirect_uri=' + return_uri + '&response_type=code&scope=' + scope + '&state=123456#wechat_redirect'); } module.exports = { oauth };
?1.01(config.js)//寫好配置參數
(1):AppID,(2):AppSecret。
?
2.在客戶端訪問 tocken,tongguo code獲取access_tocken
var config = require('./../config'); var request = require('request'); var axios = require('axios') const token = async(ctx, next) => {const { request: req, response: res } = ctxvar code = req.header.referer.match(new RegExp("[\?\&]" + 'code' + "=([^\&]+)", "i"))[1];var AppID = config.AppID;var AppSecret = config.AppSecret;var result = await request.get({url: 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + AppID + '&secret=' + AppSecret + '&code=' + code + '&grant_type=authorization_code',},function(error, response, body) {if (response.statusCode == 200) {// 第三步:拉取用戶信息(需scope為 snsapi_userinfo)// console.log(JSON.parse(body));var data = JSON.parse(body);var access_token = data.access_token;var openid = data.openid;} else {console.log(response.statusCode);}});ctx.type = 'json';ctx.body = result; }module.exports = { token }因為我這里只需要獲取到openid即可,所以在這里就已經返回result。
?
?在這里再次感謝在人生路上幫助我的人!謝謝你們。
如果以上代碼對您有用,歡迎打賞!如有錯誤的地方也請您留言指出。
?
(支付寶) (微信)
?
轉載于:https://www.cnblogs.com/jimmy1293/p/8969057.html
總結
以上是生活随笔為你收集整理的node 微信授权 获取openid的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的全局变量与局部变量
- 下一篇: jsencrypt加密