微信小程序获取openid【非云开发版】【第零期】
说在前面
此方法需要自己有一台云服务器
用云开发应该能更快更高效的获取openid,但是我也想熟练下云服务器的使用,因为后续数据库等(若不使用云开发)也需要php+nginx部署到云服务器上
梳理下顺序,大概流程如下:
- 调用 wx.login(),获取临时 code
相关文档 https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html
- 通过request方式,调用一个api,将获取到的 code 发送给后台换取 openid
相关文档 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
(api:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=CODE&grant_type=authorization_code)
四个变量:
- APPID:开发者的appid
- SECRET: 开发者的appsecret(一串不可修改的随机码)
- js_code: wx.login(res)中的res.code
- grant_type: ‘authorization_code’(就是这个)
本来有了这些东西就能获得openid,unionid了,但是微信鬼精得很,使用浏览器可以直接访问那个api,但是在微信开发者工具里面不行。
因为——
微信api开头是“api.weixin.qq.com”,微信官方不允许直接request这个链接
因此有了第三步
- 在自己的服务器上通过nginx+php部署,将request发到自己php,并由此php发送请求
港真,很麻烦吼,只是获取一个openid,还要自己租个服务器,部署这么多东西,没办法嗷,谁让我们不使用人家自己给的云服务器(云开发)喏
指路文章:
CentOS 7配置php+nginx 环境
修改了:
A. nginx.conf修改部分配置A:
location ~ \.php$ {root /var/www/html; # 项目的根目录fastcgi_pass 127.0.0.1:9000; # 应该是随便选,如果用socket通信就不行不知为何#fastcgi_index DIR/test.php; # 注释本行和注释下面的index效果是一样的index DIR/test.php; # 这里的路径是在root下的相对路径fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # 照抄include /usr/local/nginx/conf/fastcgi.conf; # 若不在(通常都不在)nginx安装文件内, 需要通过绝对路径include到安装的nginx里}
B. conf修改部分配置B:ssl部分(需要先把域名解析到服务器公网ip上,教程参考服务器平台官方解析教程)
server{listen 6002 ssl;server_name 182.XXX.XXX.6 www.XXXX.com XXXX.com; # 公网ip 域名# ssl on;ssl_certificate /usr/local/nginx/cert/server.crt; # ssl证书 .crt格式ssl_certificate_key /usr/local/nginx/cert/server.key; # ssl证书 .key格式ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;}
test.php文件填写
<?php$code = $_GET['js_code']; # 由小程序端发送此参数$secret = "c88e029182dXXXXXXX1bbb44"; # 开发者的appsecret$appid = "wxbXXXXXXXX4f1c1"; # 开发者的appid$url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$secret."&js_code=".$code."&grant_type=authorization_code";$ch = curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_TIMEOUT,30);$content = curl_exec($ch);$status = (int)curl_getinfo($ch,CURLINFO_HTTP_CODE);if ($status == 404) {return $status;}curl_close($ch); # 养成close的好习惯print_r($content);return $content;
?>
参数也可以通过在url后面加 “?js_code=【res.code】” 查看效果
不过每个code只能request一次,所以需要先将下文中.wx.request部分注释
微信小程序端.js文件填写
wx.login({success: function (res) {console.log('code为————' + res.code)if (res.code) {console.log('通过login接口的code换取openid');//通过code 换取openid--开始wx.request({//通常获取openid需要从后端获取,因为appid 和 secret最好不要在前端展示url: 'https://XXXX.cn:6002/hitsz/test_openid.php',//如果未勾选 不校验合法域名会报错 请在小程序开发工具,右上角点击详情,的本地设置data: {js_code: res.code},method: 'GET',header: { 'content-type': 'application/json' },success: function (openIdRes) {console.log("登录成功返回的值:" + openIdRes.data);},fail: function (error) {console.info("获取用户openId失败");console.info(error);}})//通过code 换取openid--结束}}})
结果展示
微信小程序获取openid【非云开发版】【第零期】相关推荐
- 微信小程序获取openid失败
解决微信小程序获取openid失败问题 安装node https://nodejs.org/en/download/ 右键云函数,在内建终端打开 npm install --save wx-serve ...
- 微信小程序获取openid和session_key并且把openid存入数据库
微信小程序开发交流qq群 581478349 微信小程序获取openid和session_key并且把openid存入数据库.已经调用openid的demo 前后端代码都有,后端php实现 在其它 ...
- 微信小程序图片无法存入云开发数据库,求解决
微信小程序图片无法存入云开发数据库,求解决 上传图片的js代码片段 上传图片的js代码片段 上传图片的js代码片段,觉得自己代码的没错,也能打印出来上传的图片地址,但是发现并没有存进数据库,求大神指点 ...
- 微信小程序:全新独家云开发微群人脉
今天给大家带来一款云开发版本的微群人脉小程序源码 该版本属于采集版本(群二维码自动采集) 该版本属于云开发版本(免服务器和域名) 这是一款不怕封小程序版本 PS:支持用户自主发布那一款还是有点危险因为 ...
- 微信公众号和微信小程序获取OPENID的方法
无论是微信小程序还是微信公众号获取OPENID都需要先获取code 获取code String url = "https://open.weixin.qq.com/connect/oauth ...
- 微信小程序开通腾讯云开发环境
目录 微信小程序开通"腾讯云"开发环境 注册腾讯云账号 配置开发环境 微信小程序开通"腾讯云"开发环境 这里强调以下,标题是"腾讯云"开发环 ...
- 微信小程序获取openid的两种方式
这篇文章是关于获取openid的两种方式,自己在学着用微信小程序来写一个小东西玩 首先我们要到小程序官网获取到自己的appid和Appsecret 如图 第一种:直接在微信小程序中获取,不需要通过后台 ...
- 微信小程序学习笔记(五) 云开发
1. 云开发简介 1.1 什么是云开发 微信云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建 ...
- 微信小程序【腾讯云开发】创建并上线小程序项目(涉及-数据库操作)
学习 视频 网址 :[云开发实战]30分钟创建并上线小程序项目 https://www.bilibili.com/video/BV1Pc411h7RU 视频-项目-源码 : 链接 : https:// ...
最新文章
- Integer的自动缓存
- 存储能否导致ESXi网络性能问题?
- redirect-action
- Windows组策略让你的网络系统更强壮
- springboot日志的级别
- CF1039D-You Are Given a Tree【根号分治,贪心】
- hadoop fs -ls / 出现WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform
- 关于neo4j初入门(2)
- 《http权威指南》读书笔记 六
- 三菱PLC 串口通信开发心得经验
- SQl盲注原理及其简单演示
- Sketch 51 新功能介绍(包含破解版下载)
- DHT分布式哈希表通俗讲解
- 51nod 1076 2条不相交的路径 无向图强联通分量 trajan算法
- 易语言excel内容查找助手
- Java程序语言(基础篇)第2章 基本程序设计 编程练习题解答
- 2018再见|2019你好
- 树莓派用root登陆_树莓派开启root用户权限
- 超详细dns劫持解决办法分享
- 232转can转换器 最新工艺