l 通过微信公众号获取appid和appsecret

l 在小程序页面中编写代码获取code

l 在后端编写方法,换取openid

l 添加一个按钮,给按钮一个开放能力 open-type="getUserInfo"

l 在小程序逻辑文件中 实现在对应的事件方法  bind:getuserinfo 中通过event对象获取用户的信息。

l 发送信息给服务器,获取结果后进行数据入库

l 编写接收接口,以openid标识来查询,进行用户信息修改后入库

1:微信页面增加触摸事件

<view>
<l-button type="success" bindtap="login" open-type="getUserInfo" >授权登录</l-button>
</view>

{1}:json

{
"usingComponents": { "l-button":"/miniprogram_npm/lin-ui/button"
}
}

2:微信js

    // pages/my/my.js
Page({ /**
* 页面的初始数据
*/
data: { },
// 触发点击事件
login(e){
// 获取用户信息
wx.getUserProfile({
desc: 'desc',
success:res=>{
if(res.userInfo){
// 昵称
let nickName=res.userInfo.nickName
// 头像
let avatarUrl=res.userInfo.avatarUrl
获取code码 //
wx.login({
success:res=>{
wx.request({
// 请求的网址
url: 'http://www.laravel7.com/openid', //仅为示例,并非真实的接口地址
// 方式
method:'post',
// 发送的数据
data: {
code:res.code,
nickName:nickName,
avatarUrl:avatarUrl
},
header: {
'content-type': 'application/json' // 默认值
},
// 结果
success (res) {
console.log(res.data.meg);
}
}) }
}) } }
})
} })
3:laravel7路由也就是小程序请求的网址
//openid 获取
Route::post('openid', 'admin\XcxLoginController@sendCode');

4:控制器代码:

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Wxuser;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; class XcxLoginController extends Controller
{
//
public function sendCode(Request $request){ $params=$request->post();
// 获取appid
$appid = "wx64832aa6eaea82b0";
// 从微信公众平台获得secret
$secret = "95e2acaf355dbcb443f5cd4748a152ed";
// 发送请求换取openid和sessionkey
$url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=".$params['code']."&grant_type=authorization_code";
// 暂使用file_get_contents()发送请求,你可以使用CURL扩展的形式实现,获取opid和session_key
$res = json_decode(file_get_contents($url),true);
// 给$params追加openid
$params['openid']=$res['openid'];
// 给$params追加session_key
$params['session_key']=$res['session_key'];
// 查看数据库里是否有openid,有就修改,没有就添加
$res= Wxuser::where('openid',$params['openid'])->first();
// 禁止code码入库
unset($params['code']);
// 有就修改用户的额openID
if ($res){
Wxuser::where('openid',$params['openid'])->update($params);
return ['code'=>201,'meg'=>'修改成功','data'=>''];
}else{
// 没有就添加新用户
$add=Wxuser::add($params);
return ['code'=>200,'meg'=>'添加成功','data'=>$add];
} }
}

5:模型添加代码:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Wxuser extends Model
{
//
protected $table = 'wxuser';
protected $guarded=[];
//添加
public static function add($params)
{
$obj = new self();
$obj->avatarUrl = $params['avatarUrl'];
$obj->nickName = $params['nickName'];
$obj->openid = $params['openid'];
$obj->session_key = $params['session_key'];
return $obj->save();
} }

表:

CREATE TABLE `wxuser` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nickName` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
`openid` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
`session_key` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL,
`avatarUrl` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL,
`updated_at` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



laravel7 微信小程序获取openid的更多相关文章

  1. C# 微信小程序获取openid sessionkey

    项目介绍 1.微信小程序获取openid和session_key 2.后台使用C#开发 项目流程 准备工作 1 获取appid 1.1 下载微信web开发工具 https://developers.w ...

  2. 微信小程序 获取OpenId

    微信小程序 官方API:https://mp.weixin.qq.com/debug/wxadoc/dev/api/ 首先 以下代码是 页面加载请求用户 是否同意授权 同意之后 用code 访问 微信 ...

  3. 微信小程序——获取openid

    1.在微信小程序后台得到appid.AppSecret 2.在任意小程序界面的[onLoad]中取得code(建议将代码写在index.js中) 3.用取得code换取openid 如后台无法将ope ...

  4. .NET开发微信小程序-获取OpenId

    注:获取当前用户信息只需要用GetUserInfo这个方法就行.这里就不需要提了 前端代码: CallBack:回调函数 function GetOpenID(CallBack){ var appIn ...

  5. 微信小程序 获取用户openid

    1,可以在小程序app.js入口文件中放入登录代码 wx.login({ success: res => { // 登录注册接口 if (res.code) { // 调用服务端登录接口,发送 ...

  6. 微信小程序获取微信的openid

    通过登录接口获取登录凭证,然后通过request请求后台获取openid,需要把后台域名放到小程序后台的request 合法域名内: 1.wx.login  获取登录凭证 2.wx.request 发 ...

  7. 小程序获取openid 小程序授权

    小程序获取openid 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系. wx.login(Object object) 调用接口获取登录凭证(cod ...

  8. .Net之微信小程序获取用户UnionID

    前言: 在实际项目开发中我们经常会遇到账号统一的问题,如何在不同端或者是不同的登录方式下保证同一个会员或者用户账号唯一(便于用户信息的管理).这段时间就有一个这样的需求,之前有个客户做了一个微信小程序 ...

  9. 微信小程序获取手机号码看这篇文章就够了

    前言 微信小程序获取手机号码,从官方文档到其他博主的文档 零零散散的 (我就是这样看过来 没有一篇满意的 也许是我搜索姿势不对) 依旧是前人栽树 后人乘凉 系列.保证看完 就可以实现获取手机号码功能 ...

随机推荐

  1. Gitee 自已提交的代码提交人头像为他人、码云上独自开发的项目显示为 2 个开发者

    简介 自己写的代码提交到码云(Gitee)上却变成了两个人,一个被正确的代码提交统计了,另一个却没有,并且确信自己输入的Gitee账号是自己绑定的邮箱,具体如下: 解决办法 查看自己的用户名 git ...

  2. node.js 使用domain模块捕获异步回调中的异常

    和其他服务器端语言相比,貌似node.js 对于异常捕捉确实非常困难. 首先你会想到try/catch ,但是在使用过程中我们会发现并没有真正将错误控制在try/catch 语句中. 为什么? 答案是 ...

  3. Java线程--CompletionService使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11871911.html Java线程--CompletionService使用 public ...

  4. git本地仓库关联多个远程仓库及取消关联

    关联 本地和远程仓库关联步骤: 在网站上(如gitee.github等,这里以gitee为例)首先添加好自己的ssh公钥 本地创建一个空的项目,即文件夹. 在文件夹下git init初始化仓库 在gi ...

  5. Spark入门案例 - 统计单词个数 / wordcount

    Scala版 import org.apache.spark.{SparkConf, SparkContext} object WordCountScala { def main(args: Arra ...

  6. 帆软报表(finereport) 饼图联动

    饼图联动:点击饼图1,饼图2和饼图3显示饼图1的关联数据,接着点击饼图2,饼图3显示饼图2的关联数据,点击上方清除级联,饼图则恢复默认展示状态 下面以上图示例效果为例,说明制作过程. 1.为每个饼图准 ...

  7. 员工管理系统+字符编码+Python代码文件操作

    员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1  debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...

  8. 北京太速科技-第六代Intel i7四核八线程6U VPX主控板

    一.产品概述 该产品是一款基于第六代Intel i7四核八线程的高性能6U VPX刀片式计算机.产品提供了可支持全网状交换的高速数据通道,其中P1,P2各支持4个PCIe x4 Gen3总线接口,P3 ...

  9. python文件操作方式

    一.文件操作 1.什么是文件 文件是操作系统暴露给用户能够快捷方便操作硬盘的快捷方式(接口) 2.代码如何操作文件 关键字:open() 三步走: 1.利用关键字open打开文件 2.利用其他方法操作 ...

  10. 使用IWebBrowser2操控浏览器页面测试(IE)

      测试一下在IE浏览器界面中插入代码测试,采用寻找窗口的方式获取Internet Explorer_Server句柄.   写的时候参考了很多网上的资料,有些地方不大适用就稍微修改了一下. Send ...