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;
// 第一步:用户同意授权,获取code
var Router = 'jy';
// 这是编码后的地址
var return_uri = config.return_uri + Router;
var scope = 'snsapi_base';
// snsapi_userinfo可以获取用户信息与token与openid
// snsapi_base只能获取到token与openid
res.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)//写好配置参数
(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 } = ctx
var 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。
在这里再次感谢在人生路上帮助我的人!谢谢你们。
如果以上代码对您有用,欢迎打赏!如有错误的地方也请您留言指出。
(支付宝) (微信)
node 微信授权 获取openid的更多相关文章
- 微信点餐系统(七)-微信授权获取openid:
章节小结: 1.学会了微信授权的步骤,学会了微信授权的文档 2.学会了使用natapp内网穿透工具 3.加深了虚拟机的网络配置以及基本使用 4.学会了抓包购票工具fiddler的使用 5.微信授权步骤 ...
- 微信授权获取用户openId等信息
在我们开发小程序的时候,需要通过授权获取用户的信息. 第一种使用wx.getUserInfo直接获取微信头像,昵称 // 必须是在用户已经授权的情况下调用 wx.getUserInfo({ succe ...
- JAVA微信公众号网页开发 —— 用户授权获取openid
官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 HttpClientUtil.java packa ...
- 微信授权获取用户openid前端实现
近来,倒霉的后台跟我说让我拿个openid做微信支付使用,寻思很简单,开始干活. 首先引导用户打开如下链接,只需要将appid修改为自己的就可以,redirect_url写你的重定向url h ...
- 微信授权获取code/openid
微信网页授权 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域名的说明 1.在微信公众号请求用户网页授权之前,开发者需要 ...
- MVC 微信网页授权 获取 OpenId
最近开发微信公众平台,做下记录,以前也开发过,这次开发又给忘了,搞了半天,还是做个笔记为好. 注意框架为MVC 开发微信公众平台.场景为,在模板页中获取用户openid,想要进行验证的页面,集成模板页 ...
- 绑定微信以及获取openId
由于公司最近在做一个微信公众号的项目,需要获取用户openId,我再一次踏入了微信的坑! 先在这里告诫后来的同志,如果一样要开始做有关微信的东西,最好是有前辈,或者直接看完文档,不懂或者纳闷的地方直接 ...
- [转] Android进阶——安卓接入微信,获取OpenID
PS: sendAuthRequest拿到code,通过code拿到access_token和openId,access_token可以拿到用户的信息 http://blog.csdn.net/hao ...
- 微信授权获取code(微信支付)
摘要:最近在做h5支付,然后发现一个问题,微信自带浏览器不支持h5支付,然后后台又做了一个微信支付的接口,然后要传code参数,代码写好总结后,就发到这里记录一下: 因为有两个支付接口,所以首先判断打 ...
随机推荐
- 20181026_队测_Brick Game
题目描述 给出一个\(n\)行\(m\)列的矩阵,矩阵中每个格子有一个非负整数,现在要求你去除其中的个格子,使得剩下的格子中的数的总和最大.另外,去除\(k\)个格子后,剩下的格子必须满足以下几个性质 ...
- 云服务器 ECS--查找公网ip使用终端连接云服务
前段时间购买了阿里云服务器,购买之后一直没用使用,今天来操作一波,可谓一波三折,只能说,不看他们的操作指南你可能连地方都找不到,所以,在这里,我想给初次购买阿里云服务的童鞋门,写写我是怎么使用阿里云服 ...
- Struts2获取request的几种方式汇总
Struts2获取request三种方法 struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象. 在Action中 ...
- optparse(命令行参数解析工具)
在用Python做自动化的时候,命令行的解析一定是少不了的,有很多命令行解析工具库,其中Python内建的一个库optparse,还是比较好用的 1.贴代码并注释 # coding=UTF-8 fro ...
- IDEA打包web项目为war,通过本地Tomcat启动war
1.打包 ①idea的打包很简单,网上教程也很多,简单说下:project struct-->artifact-->+-->Web Application:Archive--> ...
- Glide源码解析一,初始化
转载请标明出处:https:////www.cnblogs.com/tangZH/p/12409849.html Glide作为一个强大的图片加载框架,已经被android官方使用,所以,明白Glid ...
- SpringBoot 全局异常处理 @RestControllerAdvice +@ExceptionHandler 请求参数校验
ControllerAdvice 指示带注释的类辅助“控制器”. 作为的特殊化@Component,允许通过类路径扫描自动检测实现类. 通常用于定义@ExceptionHandler, @InitBi ...
- p标签内不能嵌套块级标签
今天突然发现一个问题,那就是p标签内不能嵌套块级标签 例如: <p><p></p></p> 会被浏览器解析成 我又把 div 嵌套在里面,发现还是这样 ...
- 一文快速入门Shell脚本_了解Sheel脚本基本命令
通过代码和注释的形式,列举了shell的基础操作,快速入门.shell在线编辑器 注释 单行用#号:多行::<<' 多行注释... '.:<<a 多行注释... a.:< ...
- Layabox 世界坐标和屏幕坐标互转
最近在入坑Layabox,花了几天时间做世界坐标和屏幕坐标的互转,由于Layabox没有现成的代码所以只能自己手动写,大概就是模仿unity里面的ScreenToWorldPoint和WorldToS ...