微信小程序授权登录页面(有提示窗)

微信小程序授权登录(有弹窗提示)

1 效果显示

1.1 授权登录页面

在这里插入图片描述

1.2 授权登录提示弹窗

在这里插入图片描述

1.3 拒绝授权登录

在这里插入图片描述

1.4 允许登录后,跳转到小程序首页

在这里插入图片描述

2 代码

2.1 wxml 文件
<view class='header'>
  <image src="{{userInfo.avatarUrl}}"></image><!-- 用户头像 -->
</view>
<view>
   <button class="bottom" bindtap="getUI"type='primary'>授权登录</button><!-- 授权登录按钮 -->
</view>
<!-- type='primary' 默认按钮为蓝色 --><!-- 授权登录 为按钮内容 -->
2.2 wxss 文件
/* pages/userInfo/userInfo.wxss */
.header {/*样式文件配置 */
  margin: 90rpx 0 90rpx 50rpx;/*margin 属性为给定元素设置所有四个(上下左右)方向的外边距属性。也就是 margin-top,margin-right,margin-bottom,和 margin-left 四个外边距属性设置的简写 */
  border-bottom: 1px solid rgb(11, 165, 88);/* border-bottom 简写属性把下边框的所有属性:border-bottom-color,border-bottom-style 与 border-bottom-width 设置到了一个声明中。这些属性描述了元素的下边框样式。 */
  text-align: center;
  width: 650rpx;
  height: 300rpx;
  line-height: 450rpx;
  margin-top: 120px;
 }
 .header image {
  width: 185rpx;
  height: 185rpx;
  border-radius: 50%;/* 图片圆角为50 */
  margin-right: 20rpx;
  background-color: #f8f8f8;
 }
.bottom {
  border-radius: 80rpx;
  margin: 70rpx 50rpx;
  font-size: 35rpx;
 }
2.3 js 文件
Page({
  data: {
    avatarUrl: './user-unlogin.png', // 未登录时的状态图片
    userInfo: {}, // 存储用户信息列表
    hasUserInfo: false,
    logged: false,
    takeSession: false,
    requestResult: '', // 请求结果
    canIUseGetUserProfile: false,
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') // 如需尝试获取用户信息可改为false
  },

  onLoad: function () {}, //页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
  getUI(e) { //点击授权登录时产生的监听事件
    var t = this // 定义 变量 t var 可以定义全局变量 let 定义局部变量
    console.log('获取头像昵称', e) // console.log 打印输出
    wx.getUserProfile({ //获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo,用于替换 wx.getUserInfo
      lang: 'zh_CN', //显示用户信息的语言
      desc: '用于在后台更好的识别您的身份', //声明获取用户个人信息后的用途
      success(res) { //接口调用成功的回调函数
        console.log('获取', res)
        wx.setStorageSync('userInfo', res.userInfo); // userInfo 本地缓存指定的 key  res.userInfo 需要存储的数据
        // wx.setStorageSync('userInfo', res.userInfo); 第一个参数为本地缓存指定的 key 
        // 第二个参数为 res.userInfo 为要需要存储的数据信息 这里要把 res.userInfo 获取到的用户信息列表,存储在userInfo 列表里面
        t.setData({ //对 userInfo 进行数据更改,赋值
            userInfo: res.userInfo, //把获取到的数据列表赋值给 userInfo 改变里面的数据
            avatarUrl: res.userInfo.avatarUrl //把头像地址赋值给 avatarUrl
          }),
          wx.switchTab({ //跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 就是首页  
            //用户授权成功后就要跳转到首页导航栏
            url: "/pages/index/index",
          }); // 进入到首页后,出现消息提示窗,提示用户:'欢迎使用本小程序'的提示语
        wx.showToast({ //显示消息提示框
          image: "/static/image/success.png", //自定义图标的本地路径,image 的优先级高于 icon
          icon: "success", //显示成功图标,此时 title 文本最多显示 7 个汉字长度
          title: '欢迎使用本小程序',
          duration: 1000, //提示的延迟时间 为1s 1000ms=1s
        });
      },
      fail(err) { //接口调用失败的回调函数 用户拒绝授权登录后,出现的提示窗
        console.error(err) //打印输出错误数据
        console.error("123")
        wx.showToast({ // 拒绝登录 显示消息提示框 
          image: "/static/image/error.png",
          title: '用户拒绝授权', // 提示用户:'用户拒绝授权'
          icon: "error",
          duration: 1000 // 提示语出现时间延迟1s
        });
      }
    })
  },
  onShow() { //页面显示或从后台跳回小程序时显示此页面时触发,从跳转页面返回时触发,不能传递参数
    this.setData({
      userInfo: wx.getStorageSync('userInfo') // 更新存储里面的 key :userInfo
    })
  },
  getUserProfile() {
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        this.setData({// 更新数据和给字段赋值
          avatarUrl: res.userInfo.avatarUrl,// 更新用户图像列表
          userInfo: res.userInfo,// 更新用户列表列表信息
          hasUserInfo: true,
        })
      }
    })
  },

  onGetUserInfo: function (e) {
    if (!this.data.logged && e.detail.userInfo) {
      this.setData({
        logged: true,
        avatarUrl: e.detail.userInfo.avatarUrl,
        userInfo: e.detail.userInfo,
        hasUserInfo: true,
      })
    }
  },
})

不足之处还望指教!

  • 36
    点赞
  • 260
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
### 回答1: 下面是一个简单的微信小程序授权登录代码: ``` // 在需要授权登录的页面对应的.js文件中 Page({ onLoad: function() { // 获取用户授权信息 wx.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 wx.getUserInfo({ success: res => { // 可以将 res 发送给后台解码出 unionId this.setData({ userInfo: res.userInfo, hasUserInfo: true }) } }) } } }) }, // 授权登录 bindGetUserInfo: function(e) { if (e.detail.userInfo) { this.setData({ userInfo: e.detail.userInfo, hasUserInfo: true }) } } }) // 在需要授权登录的页面对应的.wxml文件中 <!-- 显示授权按钮 --> <button type="primary" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button> <!-- 显示用户信息 --> <view class="userinfo" wx:if="{{hasUserInfo}}"> <image src="{{userInfo.avatarUrl}}" /> <text>{{userInfo.nickName}}</text> </view> ``` 这段代码中,通过调用小程序 `wx.getSetting` 接口,可以获取用户的授权信息,如果已经授权,则直接调用 `wx.getUserInfo` 接口获取用户的头像和昵称;如果用户未授权,则通过 `button` 组件的 `open-type` 属性和 `bindgetuserinfo` 事件,提示用户授 ### 回答2: 微信小程序是一种在微信内部运行的应用程序,它可以通过手机微信直接访问。在开发微信小程序时,常常需要用户授权登录才能获取用户的相关信息。下面是一个简单的微信小程序授权登录的代码示例。 首先,在微信小程序项目的app.json文件中,添加如下代码: ``` { "pages": [ "pages/index/index", "pages/login/login" ], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "Demo", "navigationBarTextStyle": "black" }, "permission": { "scope.userLocation": { "desc": "获取您的地理位置信息" } }, "tabBar": { "color": "#999999", "selectedColor": "#1296db", "backgroundColor": "#ffffff", "borderStyle": "white", "list": [ { "pagePath": "pages/index/index", "text": "首页", "iconPath": "images/tabbar/home.png", "selectedIconPath": "images/tabbar/home_selected.png" } ] }, "networkTimeout": { "request": 10000, "downloadFile": 10000 }, "plugins": { "myPlugin": { "version": "1.0.0", "provider": "wx12345678" } }, "requiredBackgroundModes": ["audio", "location"], "resizable": true, "navigateToMiniProgramAppIdList": ["wxe5f529abc1234567"] } ``` 在上述代码中,我们可以看到permission对象中的scope属性,它定义了小程序需要获取的用户权限。在这个示例中,我们定义了获取用户地理位置信息的权限。 接下来,在小程序登录页面login.js中,我们可以使用wx.login()方法来实现微信授权登录,代码如下: ``` Page({ data: { // 存储用户信息 userInfo: null }, // 登录按钮点击事件 onLoginTap: function() { let that = this; wx.login({ success: function(res) { // 授权成功,获取登录凭证code if (res.code) { // 通过code向服务器发起登录请求,根据服务器返回的数据判断登录是否成功 wx.request({ url: 'https://example.com/login', data: { code: res.code }, success: function(res) { // 登录成功,保存用户信息到本地 that.setData({ userInfo: res.data.userInfo }); // 跳转到首页 wx.switchTab({ url: '/pages/index/index' }); } }); } else { console.log('登录失败!' + res.errMsg); } } }); } }); ``` 在上述代码中,我们通过wx.login()方法获取用户的登录凭证code,然后将该code发送给后台服务器进行登录验证。如果登录成功,我们可以在成功回调函数中获取到服务器返回的用户信息,并将其保存到本地数据中。 这就是一个简单的微信小程序授权登录的代码示例。通过这些代码,用户可以在微信小程序中实现授权登录功能,并获取到用户的相关信息。当然,这只是一个简单的示例,实际开发中还需要进一步完善和处理异常情况。 ### 回答3: 微信小程序授权登录是通过调用微信提供的登录接口来实现的。以下是一个简单的示例代码,用于演示微信小程序授权登录功能: 1. 在小程序页面的js文件中,定义一个按钮的点击事件,当用户点击按钮时触发登录操作: ```javascript Page({ login: function() { wx.login({ success: function(res) { if (res.code) { // 登录成功,获取到用户的 code,将其发送给后端服务器 console.log(res.code); // 然后根据服务器返回的数据处理登录逻辑 } else { console.log('登录失败!'); } } }); } }) ``` 2. 在小程序页面的wxml文件中,添加一个按钮,当点击该按钮时执行上述定义的登录事件: ```html <view> <button bindtap="login">授权登录</button> </view> ``` 3. 在小程序的app.js文件中,监听小程序的启动事件,以便在小程序启动时执行登录操作: ```javascript App({ onLaunch: function() { // 检查用户是否已经登录,如果已登录,直接执行相关操作 // 如果未登录,跳转到登录页面 } }) ``` 通过以上的代码示例,我们可以实现微信小程序授权登录功能。用户点击按钮后,小程序会调用微信的登录接口,获取到用户的code,并将该code发送给后端服务器进行后续登录操作。在小程序的app.js文件中,我们可以对小程序的启动事件进行监听,以便在小程序启动时执行登录操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值