微信小程序登录

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']);
}

}
posted @ 2021-09-23 17:01  执着y1份等待  阅读(187)  评论(0)    收藏  举报