微信小程序登录
js页面
Page({
data: {
is_login:false,
nickname:'',
img:'',
token:''
},
onLoad: function() {
this.login
},
login(){
var _this = this;
var token= wx.getStorageSync('token')
if (token!='') {
wx.navigateTo({
url: "/pages/login/login",
})
return false
}
wx.getUserProfile({
desc: 'desc',
success:(res)=>{
var nickname=res.userInfo.nickName;
var img=res.userInfo.avatarUrl;
wx.login({
success:function(e){
var code=e.code
var url = "http://www.duan.com/index.php/admin/Login/login.html" //后台地址
wx.request({
url: url,
data:{nickname,img,code},
header:{"content-type":"application/x-www-form-urlencoded"},
success:function(e){
if (e.data.code==0) {
var token=e.data.data
wx.setStorageSync('token', token) //存到缓存中
wx.setStorageSync('nickname', nickname)
wx.setStorageSync('img', img)
_this.setData({
is_login:true,
nickname:nickname,
img:img,
})
}
}
})
}
})
},
fail:(e)=>{
wx.showToast({
title: '授权失败',
})
}
})
}
},
)
wxml 页面
<view class='headView'>
<view class='headImageView'>
<image class='headImage' src='{{img}}' mode='scaleToFill'></image>
</view>
<!-- <view class='contentText'>{{img}}</view> -->
</view>
<button open-type="getUserInfo" bindtap="login">授权登录</button>
判断是否登录过
js 页面代码
// pages/login/login.js
Page({
/**
* 页面的初始数据
*/
data: {
is_login:false,
nickname:'',
img:'',
token:'',
arr:''
},
login(){
var _this = this;
var token= wx.getStorageSync('token')
if (token!='') {
wx.navigateTo({
url: "/pages/logs/logs",
})
return false
}
wx.getUserProfile({
desc: 'desc',
success:(res)=>{
var nickname=res.userInfo.nickName;
var img=res.userInfo.avatarUrl;
wx.login({
success:function(e){
var code=e.code;
var url = "http://www.duan.com/index.php/admin/Login/login.html"
wx.request({
url: url,
data:{nickname,img,code},
header:{"content-type":"application/x-www-form-urlencoded"},
success:function(e){
if (e.data.code==0) {
var token=e.data.data
wx.setStorageSync('token', token)
wx.setStorageSync('nickname', nickname)
wx.setStorageSync('img', img)
_this.setData({
is_login:true,
nickname:nickname,
img:img,
})
}
}
})
}
})
},
fail:(e)=>{
wx.showToast({
title: '授权失败',
})
}
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var _this=this
wx.request({
url: "http://www.duan.com/index.php/admin/Login/show.html",
success:function(a){
console.log(a.data.data)
_this.setData({
arr:a.data.data
})
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
wxml页面代码
<text wx:for="{{arr}}">名称:{{item.name}}价格:{{item.price}}数量:{{item.stock}}</text>
<button open-type="getUserInfo" bindtap="login">加入购物车</button>
php 后台
<?php
namespace app\admin\controller;
use think\Controller;
use think\Db;
use think\Request;
class Login extends Controller
{
/*
* 调用curl
*
*
* */
function geturl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$output = json_decode($output,true);
return $output;
}
/*
* 登录验证
*
*
* */
public function login(){
$data=input();
$code=input('code');
$appid="wxdbe715a7b8ec9e57";
$secret="2f9a0c0d1ebe3361ce27e5404d4a361a";
$url="https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$secret."&js_code=".$code."&grant_type=authorization_code";
$res=$this->geturl($url);
// var_dump($res);
$arr=[
'nickname'=>$data['nickname'],
'img'=>$data['img'],
'session_key'=>$res['session_key'],
'code'=>$data['code'],
'openid'=>$res['openid'],
];
$str=Db::table('weixin')->where('openid',$arr['openid'])->find();
if ($str){
Db::table('weixin')->where('openid',$arr['openid'])->update(['session_key'=>$arr['session_key']]);
return json(['code'=>0,'msg'=>'授权成功','data'=>$str['openid']]);
}else{
Db::table('weixin')->insert($arr);
return json(['code'=>0,'msg'=>'授权成功','data'=>$str['openid']]);
}
}
/*
* 商品列表
*
* */
public function show(){
$data=Db::table('goods')->select();
return json(['code'=>0,'data'=>$data,'msg'=>'ok']);
}
}
浙公网安备 33010602011771号