uniapp 微信小程序 授权 登录

本文涉及的产品
.cn 域名,1个 12个月
简介: uniapp 微信小程序 授权 登录

Uniapp 微信小程序 授权登录教程

在开发微信小程序时,用户授权登录是非常重要的一环。通过授权登录,开发者可以获取用户的基本信息,从而为用户提供更加个性化的服务。本文将介绍如何在Uniapp中实现微信小程序的授权登录,并提供详细的代码示例和注释。

一、准备工作

注册微信小程序并获取AppID和AppSecret: 你需要在微信公众平台注册一个小程序账号,并获取AppID和AppSecret。这些信息将在我们进行授权登录时使用。


配置Uniapp项目: 在你的Uniapp项目中,打开manifest.json文件,找到并填写微信小程序的AppID。

"mp-weixin" : {
    "appid" : "你的AppID",
    "setting": {
        "urlCheck": false
    },
    "libVersion": "2.9.0",
    "style": "v2",
    "subPackages": false
}

配置微信小程序的合法域名: 登录微信公众平台,进入小程序后台,在“开发”->“开发设置”中配置服务器域名,确保域名已在微信的合法域名列表中

二、实现授权登录

在页面中添加登录按钮
在你的小程序页面中添加一个用于触发登录的按钮,例如在pages/index/index.vue中:

<template>
  <view>
    <button open-type="getUserInfo" @getuserinfo="getUserInfo">微信登录</button>
  </view>
</template>

在页面脚本中处理授权逻辑

在页面脚本部分,我们需要编写逻辑以处理用户的授权信息。

<script>
export default {
  data() {
    return {
      userInfo: null,
      hasUserInfo: false
    }
  },
  methods: {
    // 获取用户信息
    getUserInfo(e) {
      if (e.mp.detail.userInfo) {
        this.userInfo = e.mp.detail.userInfo;
        this.hasUserInfo = true;
        this.login();
      } else {
        uni.showModal({
          title: '警告',
          content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!',
          showCancel: false,
          confirmText: '返回授权',
          success: function(res) {
            if (res.confirm) {
              console.log('用户点击了“返回授权”');
            }
          }
        });
      }
    },
    // 登录并获取用户信息
    login() {
      uni.login({
        provider: 'weixin',
        success: (loginRes) => {
          // 登录成功,获取用户code
          const { code } = loginRes;
          // 发送code到后台换取openId, sessionKey, unionId
          uni.request({
            url: 'https://你的服务器地址/api/login', // 你的登录API地址
            method: 'POST',
            data: {
              code
            },
            success: (res) => {
              if (res.data && res.data.success) {
                const { openId, sessionKey, unionId } = res.data;
                // 将用户信息和session存储到本地
                uni.setStorageSync('userInfo', this.userInfo);
                uni.setStorageSync('openId', openId);
                uni.setStorageSync('sessionKey', sessionKey);
                uni.setStorageSync('unionId', unionId);
              } else {
                uni.showToast({
                  title: '登录失败',
                  icon: 'none'
                });
              }
            },
            fail: () => {
              uni.showToast({
                title: '请求失败',
                icon: 'none'
              });
            }
          });
        },
        fail: (err) => {
          console.log('uni.login 接口调用失败,将无法正常使用开放接口等服务', err);
          uni.showToast({
            title: '登录失败',
            icon: 'none'
          });
        }
      });
    }
  }
}
</script>
三、后端服务器处理

在你的服务器上,你需要处理从微信获取到的code,并通过微信接口换取用户的openIdsessionKeyunionId

示例代码(Node.js):

const express = require('express');
const request = require('request');
const app = express();
 
const APPID = '你的AppID';
const APPSECRET = '你的AppSecret';
 
app.use(express.json());
 
app.post('/api/login', (req, res) => {
  const { code } = req.body;
 
  if (!code) {
    return res.status(400).json({ success: false, message: '缺少code参数' });
  }
 
  const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${APPID}&secret=${APPSECRET}&js_code=${code}&grant_type=authorization_code`;
 
  request.get(url, (err, response, body) => {
    if (err) {
      return res.status(500).json({ success: false, message: '请求微信接口失败' });
    }
 
    const data = JSON.parse(body);
 
    if (data.errcode) {
      return res.status(400).json({ success: false, message: data.errmsg });
    }
 
    res.json({
      success: true,
      openId: data.openid,
      sessionKey: data.session_key,
      unionId: data.unionid
    });
  });
});
 
app.listen(3000, () => {
  console.log('服务器启动成功,监听端口3000');
});
四、总结

通过以上步骤,我们实现了一个简单的微信小程序授权登录功能。完整的流程包括:


用户点击微信登录按钮,触发getUserInfo事件。

在getUserInfo事件中,调用uni.login获取用户的code。

将code发送到服务器,服务器通过微信接口换取用户的openId、sessionKey和unionId。

将用户信息存储到本地,以便后续使用。

以上示例代码仅供参考,实际开发中可能需要根据具体需求进行调整和完善。希望本文能对你在开发微信小程序授权登录功能时有所帮助。

相关文章
|
16天前
|
小程序 前端开发 算法
|
1月前
|
移动开发 前端开发 Android开发
开发指南059-App实现微信扫描登录
App是用uniapp开发的,打包为apk,上传到安卓平板中使用
|
1月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
215 3
|
1月前
|
移动开发 小程序 数据可视化
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
40 2
|
1月前
|
存储 移动开发 小程序
uniapp富文本editor输入二次扩展兼容微信小程序
uniapp富文本editor输入二次扩展兼容微信小程序
63 0
|
3月前
|
前端开发 JavaScript 应用服务中间件
【uniapp】谷歌授权登录,前端uniapp直调(含源码)
本文介绍如何在uniapp项目中实现谷歌授权登录,无需后端参与。文章分为三部分:1)谷歌授权登录流程,详细说明从用户点击登录到获取用户信息的整个过程;2)谷歌开发者控制台配置,包括创建项目、配置同意屏幕及OAuth客户端ID等步骤;3)uniapp前端实操,提供具体代码示例,展示如何获取授权码并用其交换访问令牌,最终获取用户信息
148 2
【uniapp】谷歌授权登录,前端uniapp直调(含源码)
|
1月前
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
75 0
|
1月前
|
小程序
uniapp实现微信小程序隐私协议组件封装
uniapp实现微信小程序隐私协议组件封装
44 0
|
3月前
|
移动开发 小程序 前端开发
|
4月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的房屋租赁App的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的房屋租赁App的详细设计和实现(源码+lw+部署文档+讲解等)
127 7
基于SpringBoot+Vue+uniapp的房屋租赁App的详细设计和实现(源码+lw+部署文档+讲解等)