uniapp 安卓app 调起微信app 授权登录

简介: uniapp 安卓app 调起微信app 授权登录

要在UniApp中实现调起微信授权登录,需要使用微信的SDK以及UniApp提供的插件功能。以下是实现步骤和示例代码,包含详细注释。

第一步:准备工作

  1. 注册微信开放平台并获取AppID和AppSecret
  • 前往微信开放平台,创建一个应用并获取对应的AppID和AppSecret。
  1. 配置微信开发环境
  • 下载微信SDK并集成到你的UniApp项目中。
  1. 安装UniApp微信插件

        使用以下命令在你的UniApp项目中安装微信插件:

uni add plugin wx-auth

第二步:配置项目

  1. 配置manifest.json: 在UniApp项目manifest.json文件中进行配置。
{
  "mp-weixin": {
    "appid": "YOUR_WECHAT_APPID"
  },
  "app-plus": {
    "modules": {
      "oauth": {
        "description": "社会化登录"
      }
    },
    "oauth": {
      "weixin": {
        "appid": "YOUR_WECHAT_APPID",
        "appsecret": "YOUR_WECHAT_APPSECRET"
      }
    }
  }
}
  1. 配置微信开放平台:在微信开放平台中配置授权回调域名

第三步:实现微信授权登录

以下是实现微信授权登录的详细代码和注释。


1. 引入微信SDK和UniApp插件

在项目的main.js中引入微信SDK和UniApp插件。

import Vue from 'vue'
import App from './App'
 
// 引入微信SDK
import WeixinSDK from 'weixin-js-sdk';
 
// 引入UniApp微信插件
import wxAuth from 'uni-wx-auth';
 
Vue.config.productionTip = false
 
App.mpType = 'app'
 
const app = new Vue({
  ...App
})
app.$mount()
2. 编写微信登录逻辑

在需要触发微信登录的页面或组件中编写登录逻辑。以下是示例代码:

export default {
  data() {
    return {
      code: '',
      userInfo: null
    }
  },
  methods: {
    // 调起微信授权登录
    wxLogin() {
      // 检查微信环境
      if (this.checkWeixin()) {
        // 调用UniApp微信插件进行授权登录
        uni.login({
          provider: 'weixin',
          success: (loginRes) => {
            console.log('登录成功', loginRes);
            this.code = loginRes.code;
            // 获取用户信息
            this.getUserInfo(loginRes.code);
          },
          fail: (err) => {
            console.error('登录失败', err);
          }
        });
      } else {
        console.error('请在微信环境中打开');
      }
    },
    // 检查是否在微信环境中
    checkWeixin() {
      const ua = window.navigator.userAgent.toLowerCase();
      return ua.indexOf('micromessenger') !== -1;
    },
    // 获取用户信息
    getUserInfo(code) {
      uni.request({
        url: 'https://api.weixin.qq.com/sns/oauth2/access_token',
        data: {
          appid: 'YOUR_WECHAT_APPID',
          secret: 'YOUR_WECHAT_APPSECRET',
          code: code,
          grant_type: 'authorization_code'
        },
        success: (res) => {
          console.log('获取access_token成功', res);
          const accessToken = res.data.access_token;
          const openid = res.data.openid;
          // 获取用户详细信息
          this.getUserDetail(accessToken, openid);
        },
        fail: (err) => {
          console.error('获取access_token失败', err);
        }
      });
    },
    // 获取用户详细信息
    getUserDetail(accessToken, openid) {
      uni.request({
        url: 'https://api.weixin.qq.com/sns/userinfo',
        data: {
          access_token: accessToken,
          openid: openid,
          lang: 'zh_CN'
        },
        success: (res) => {
          console.log('获取用户信息成功', res);
          this.userInfo = res.data;
        },
        fail: (err) => {
          console.error('获取用户信息失败', err);
        }
      });
    }
  }
}
3. 用户界面

在相应的页面中添加按钮来触发微信登录。

<template>
  <view>
    <button @click="wxLogin">微信登录</button>
    <view v-if="userInfo">
      <image :src="userInfo.headimgurl" mode="aspectFill"></image>
      <text>{{ userInfo.nickname }}</text>
    </view>
  </view>
</template>
 
<script>
export default {
  data() {
    return {
      code: '',
      userInfo: null
    }
  },
  methods: {
    wxLogin() {
      if (this.checkWeixin()) {
        uni.login({
          provider: 'weixin',
          success: (loginRes) => {
            console.log('登录成功', loginRes);
            this.code = loginRes.code;
            this.getUserInfo(loginRes.code);
          },
          fail: (err) => {
            console.error('登录失败', err);
          }
        });
      } else {
        console.error('请在微信环境中打开');
      }
    },
    checkWeixin() {
      const ua = window.navigator.userAgent.toLowerCase();
      return ua.indexOf('micromessenger') !== -1;
    },
    getUserInfo(code) {
      uni.request({
        url: 'https://api.weixin.qq.com/sns/oauth2/access_token',
        data: {
          appid: 'YOUR_WECHAT_APPID',
          secret: 'YOUR_WECHAT_APPSECRET',
          code: code,
          grant_type: 'authorization_code'
        },
        success: (res) => {
          console.log('获取access_token成功', res);
          const accessToken = res.data.access_token;
          const openid = res.data.openid;
          this.getUserDetail(accessToken, openid);
        },
        fail: (err) => {
          console.error('获取access_token失败', err);
        }
      });
    },
    getUserDetail(accessToken, openid) {
      uni.request({
        url: 'https://api.weixin.qq.com/sns/userinfo',
        data: {
          access_token: accessToken,
          openid: openid,
          lang: 'zh_CN'
        },
        success: (res) => {
          console.log('获取用户信息成功', res);
          this.userInfo = res.data;
        },
        fail: (err) => {
          console.error('获取用户信息失败', err);
        }
      });
    }
  }
}
</script>
 
<style scoped>
button {
  width: 200px;
  height: 50px;
  background-color: #1AAD19;
  color: white;
  text-align: center;
  line-height: 50px;
  border-radius: 5px;
  margin: 20px auto;
  display: block;
}
</style>

结论

通过上述步骤,你可以在UniApp中实现调起微信授权登录的功能。这包括了微信SDK的集成、UniApp插件的使用以及相关的代码实现和详细注释。通过这些步骤,你的应用可以方便地实现微信登录功能,为用户提供更加便捷的体验。


相关文章
|
7月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
8月前
|
缓存 小程序 开发工具
最新原创uniapp+vue3仿微信界面聊天app系统
最新原创研发uniapp+vue3实战跨端仿微信App界面聊天程序。支持运行到H5+小程序+APP端。
375 6
最新原创uniapp+vue3仿微信界面聊天app系统
|
9月前
|
存储 人工智能 Android开发
为什么微信发送的APP安装不了,.apk转化为.apk.1
微信发送的APP文件常被改为.apk.1格式导致无法安装,推荐使用夸克或QQ浏览器解决。
1214 14
|
9月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
1082 4
|
9月前
|
XML Java Android开发
微信虚拟视频插件安卓,微信虚拟相机替换拍照,java源码分享
完整的相机应用项目包含三个主要文件:主活动实现、布局文件和清单文件。代码实现了相机预览、
|
9月前
|
API Android开发
微信虚拟摄像头模块,微信虚拟视频聊天,安卓虚拟摄像头插件
该实现包含虚拟摄像头服务核心、视频流生成和Android配置三个关键模块,使用Camera2
|
11月前
|
Android开发 数据安全/隐私保护 开发者
Android自定义view之模仿登录界面文本输入框(华为云APP)
本文介绍了一款自定义输入框的实现,包含静态效果、hint值浮动动画及功能扩展。通过组合多个控件完成界面布局,使用TranslateAnimation与AlphaAnimation实现hint文字上下浮动效果,支持密码加密解密显示、去除键盘回车空格输入、光标定位等功能。代码基于Android平台,提供完整源码与attrs配置,方便复用与定制。希望对开发者有所帮助。
212 0
|
12月前
|
数据采集 JSON 网络安全
移动端数据抓取:Android App的TLS流量解密方案
本文介绍了一种通过TLS流量解密技术抓取知乎App热榜数据的方法。利用Charles Proxy解密HTTPS流量,分析App与服务器通信内容;结合Python Requests库模拟请求,配置特定请求头以绕过反爬机制。同时使用代理IP隐藏真实IP地址,确保抓取稳定。最终成功提取热榜标题、内容简介、链接等信息,为分析热点话题和用户趋势提供数据支持。此方法也可应用于其他Android App的数据采集,但需注意选择可靠的代理服务。
485 11
移动端数据抓取:Android App的TLS流量解密方案
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
908 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
7月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。