说在前面

此方法需要自己有一台云服务器

用云开发应该能更快更高效的获取openid,但是我也想熟练下云服务器的使用,因为后续数据库等(若不使用云开发)也需要php+nginx部署到云服务器上


梳理下顺序,大概流程如下:

  1. 调用 wx.login(),获取临时 code

相关文档 https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html

  1. 通过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这个链接

因此有了第三步

  1. 在自己的服务器上通过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【非云开发版】【第零期】相关推荐

  1. 微信小程序获取openid失败

    解决微信小程序获取openid失败问题 安装node https://nodejs.org/en/download/ 右键云函数,在内建终端打开 npm install --save wx-serve ...

  2. 微信小程序获取openid和session_key并且把openid存入数据库

    微信小程序开发交流qq群   581478349 微信小程序获取openid和session_key并且把openid存入数据库.已经调用openid的demo 前后端代码都有,后端php实现 在其它 ...

  3. 微信小程序图片无法存入云开发数据库,求解决

    微信小程序图片无法存入云开发数据库,求解决 上传图片的js代码片段 上传图片的js代码片段 上传图片的js代码片段,觉得自己代码的没错,也能打印出来上传的图片地址,但是发现并没有存进数据库,求大神指点 ...

  4. 微信小程序:全新独家云开发微群人脉

    今天给大家带来一款云开发版本的微群人脉小程序源码 该版本属于采集版本(群二维码自动采集) 该版本属于云开发版本(免服务器和域名) 这是一款不怕封小程序版本 PS:支持用户自主发布那一款还是有点危险因为 ...

  5. 微信公众号和微信小程序获取OPENID的方法

    无论是微信小程序还是微信公众号获取OPENID都需要先获取code 获取code String url = "https://open.weixin.qq.com/connect/oauth ...

  6. 微信小程序开通腾讯云开发环境

    目录 微信小程序开通"腾讯云"开发环境 注册腾讯云账号 配置开发环境 微信小程序开通"腾讯云"开发环境 这里强调以下,标题是"腾讯云"开发环 ...

  7. 微信小程序获取openid的两种方式

    这篇文章是关于获取openid的两种方式,自己在学着用微信小程序来写一个小东西玩 首先我们要到小程序官网获取到自己的appid和Appsecret 如图 第一种:直接在微信小程序中获取,不需要通过后台 ...

  8. 微信小程序学习笔记(五) 云开发

    1. 云开发简介 1.1 什么是云开发 微信云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建 ...

  9. 微信小程序【腾讯云开发】创建并上线小程序项目(涉及-数据库操作)

    学习 视频 网址 :[云开发实战]30分钟创建并上线小程序项目 https://www.bilibili.com/video/BV1Pc411h7RU 视频-项目-源码 : 链接 : https:// ...

最新文章

  1. Integer的自动缓存
  2. 存储能否导致ESXi网络性能问题?
  3. redirect-action
  4. Windows组策略让你的网络系统更强壮
  5. springboot日志的级别
  6. CF1039D-You Are Given a Tree【根号分治,贪心】
  7. hadoop fs -ls / 出现WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform
  8. 关于neo4j初入门(2)
  9. 《http权威指南》读书笔记 六
  10. 三菱PLC 串口通信开发心得经验
  11. SQl盲注原理及其简单演示
  12. Sketch 51 新功能介绍(包含破解版下载)
  13. DHT分布式哈希表通俗讲解
  14. 51nod 1076 2条不相交的路径 无向图强联通分量 trajan算法
  15. 易语言excel内容查找助手
  16. Java程序语言(基础篇)第2章 基本程序设计 编程练习题解答
  17. 2018再见|2019你好
  18. 树莓派用root登陆_树莓派开启root用户权限
  19. 超详细dns劫持解决办法分享
  20. 232转can转换器 最新工艺

热门文章

  1. 操作系统微内核和Dubbo微内核各自优缺点!
  2. Sophus库:李群和李代数
  3. 判断各种苹果屏幕分辨率,设置对应样式
  4. 兵贵神速——快速排序
  5. java竖直制表符怎么用_java制表符怎么用
  6. 动车和高铁的区别——最详细的技术贴
  7. 防爆柜和防腐蚀柜的区别有哪些
  8. python使用百度AI将文字转换为语言
  9. Paddle-OCR简介
  10. 20X46 FCPX模板美好回忆电子相册图片文字介绍展示Past Memories