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插件的使用以及相关的代码实现和详细注释。通过这些步骤,你的应用可以方便地实现微信登录功能,为用户提供更加便捷的体验。


相关文章
|
2天前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
34 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
4天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
16天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
121 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
14天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
37 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
4月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
930 1
|
13天前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
133 12
|
1月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
36 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
30天前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
138 12
|
2月前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
90 11

热门文章

最新文章

  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 4
    【Azure Function】Function App门户上的Test/Run返回错误:Failed to fetch
    31
  • 5
    陪玩APP推送配置:陪玩系统手机锁屏收不到推送?可能是这些原因!解决方案来了!
    34
  • 6
    小游戏源码开发之可跨app软件对接是如何设计和开发的
    33
  • 7
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
    135
  • 8
    PiliPala:开源项目真香,B站用户狂喜!这个开源APP竟能自定义主题+去广告?PiliPala隐藏功能大揭秘
    60
  • 9
    语音app系统软件源码开发搭建新手启蒙篇
    44
  • 10
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
    884