web前端|js教程
详细信息,小程序,用户
web前端-js教程
本文主要和大家介绍微信小程序授权获取用户详细信息openid的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下,希望能帮助到大家。
android 交友 源码,vscode 处理表格,ubuntu 创建脚本,web项目配tomcat,webscriper爬虫,php 函数 位置,seo 搜索负面信息上浮,asp三合一网站源码安装说明,免费手机网页制作模板lzw
小程序获取用户的头像昵称openid之类
在线签合同源码,ubuntu运用cd,压测tomcat主页面,怎样抓取爬虫,php fiber,白云区运营seo优化哪家便宜lzw
小熊棋牌全套完整源码,ubuntu的无线驱动,tomcat端口使用情况,api防止爬虫,php安全及性能优化,seo好上手lzw
第一种使用wx.getUserInfo直接获取微信头像,昵称
wx.getUserInfo({ success: function (res) { that.setData({nickName: res.userInfo.nickName,avatarUrl: res.userInfo.avatarUrl, }) },})
第二种
我们在使用小程序wx.login API进行登录的时候,直接使用wx.getUserInfo是不能获取更多的信息的,如微信用户的openid。
官方提示,需要发送获取到的code进行请求到微信的后端API,进行用户解密之类的操作才可以获取,
根据文档,只需要进行一个get请求到如下地址即可:
https://api./sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_codeappid和secret在微信小程序后台可以看到,js_code为使用wx.login登录时获取到的code参数数据,grant_type这个不用改动。
js文件
var openId = (wx.getStorageSync(openId)) if (openId) {wx.getUserInfo({success: function (res) { that.setData({ nickName: res.userInfo.nickName, avatarUrl: res.userInfo.avatarUrl, })},fail: function () { // fail console.log("获取失败!")},complete: function () { // complete console.log("获取用户信息完成!")}}) } else {wx.login({success: function (res) { console.log(res.code) if (res.code) { wx.getUserInfo({ withCredentials: true, success: function (res_user) {wx.request({ //后台接口地址 url: https://....com/wx/login, data: { code: res.code, encryptedData: res_user.encryptedData, iv: res_user.iv }, method: GET, header: { content-type: application/json }, success: function (res) { // this.globalData.userInfo = JSON.parse(res.data); that.setData({ nickName: res.data.nickName, avatarUrl: res.data.avatarUrl, }) wx.setStorageSync(openId, res.data.openId); }}) }, fail: function () {wx.showModal({ title: 警告通知, content: 您点击了拒绝授权,将无法正常显示个人信息,点击确定重新获取授权。, success: function (res) { if (res.confirm) { wx.openSetting({ success: (res) => {if (res.authSetting["scope.userInfo"]) {////如果用户重新同意了授权登录wx.login({ success: function (res_login) { if (res_login.code) { wx.getUserInfo({ withCredentials: true, success: function (res_user) {wx.request({url: https://....com/wx/login,data: { code: res_login.code, encryptedData: res_user.encryptedData, iv: res_user.iv},method: GET,header: { content-type: application/json},success: function (res) { that.setData({ nickName: res.data.nickName, avatarUrl: res.data.avatarUrl, }) wx.setStorageSync(openId, res.data.openId);}}) } }) } }});} }, fail: function (res) { } }) } }}) }, complete: function (res) { } }) }}}) } }, globalData: { userInfo: null }
后台是php 框架是laravel5.4版本
官方文档:
https://mp./debug/wxadoc/dev/api/signature.html
微信官方提供了多种编程语言的示例代码(点击下载)。每种语言类型的接口名字均一致。调用方式可以参照示例。
下载之后在php文件中引入:
get(code); $encryptedData = $request->get(encryptedData); $iv = $request->get(iv); $appid = "***" ; $secret = "***"; $URL = "https://api./sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code"; $apiData=file_get_contents($URL); // var_dump($code,wwwwwwww,$apiData[errscode]); // $ch = curl_init(); // curl_setopt($ch, CURLOPT_URL, $URL); // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($ch, CURLOPT_HEADER, 0); // $output = curl_exec($ch); // curl_close($ch) if(!isset($apiData[errcode])){$sessionKey = json_decode($apiData)->session_key;$userifo = new \WXBizDataCrypt($appid, $sessionKey);$errCode = $userifo->decryptData($encryptedData, $iv, $data );if ($errCode == 0) { return ($data . "\n");} else { return false;} } }
官方文档的登录流程图,整个登录流程基本下图例:
Thinkphp5微信小程序如何获取用户信息接口
微信小程序获取用户信息实例方法
微信小程序获取用户信息如何实现