更新记录

1.0.0(2026-05-21) 下载此版本

实现华为AGC云函数调用,示例项目结合华为登录的unionid实现云函数查询云数据库


平台兼容性

uni-app(5.01)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - - 14
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

lyc-HWcloudFunction

简介

lyc-login 是一款专为 HarmonyOS Next (鸿蒙) 平台设计的 UTS 原生插件。它封装了华为账号登录(Account Kit)的授权与用户信息获取逻辑,简化了在 uni-app x 项目中实现华为一键登录的流程,支持自动处理用户昵称、头像及 UnionID等敏感数据的解析与回调。

功能特性

  • 原生性能:基于 ArkTS 开发,直接调用鸿蒙系统 API。
  • 类型安全:内置完善的 TypeScript/UTS 类型定义。
  • 灵活传参:支持传入 Object 对象或 JSON 字符串作为云函数参数。
  • 异常捕获:统一的错误处理机制,方便前端调试。

使用方式

安装本人发布的华为登录插件配套实现华为账号登录云函数

<template>
  <view class="container">
    <!-- 登录前显示按钮 -->
    <button v-if="!nickName" @click="login" class="login-button">华为登录</button>

    <!-- 登录后显示用户信息卡 -->
    <view v-else class="profile-card">
      <!-- 头像 -->
      <image :src="avatarUrl" mode="aspectFill" class="avatar"></image>

      <!-- 昵称 -->
      <text class="name">{{ nickName }}</text>

      <!-- ID 和复制按钮 -->
      <view class="id-wrapper">
      <text class="id-text">
  ID: {{ unionID ? unionID.substring(0, 6) + '...' + unionID.substring(unionID.length - 4) : '' }}
</text>
        <button @click="copyId" class="copy-btn">点击复制</button>
      </view>
    </view>
  </view>
</template>

<script>
import { login } from '@/uni_modules/lyc-login';
import { yfun } from '../../uni_modules/lyc-cloudfun';

export default {
  data() {
    return {
      nickName: '',
      avatarUrl: '',
      unionID: ''
    };
  },
  methods: {
   login() {
      login({
        suc: (data) => {
          // 1. 打印调试
          console.log('Raw Data:', JSON.stringify(data));

          this.avatarUrl = data.avatarUri;
          this.unionID = data.unionID;
          yfun({
              name:'run',
              data:{
  "operation": "query",
  "records": 
    {
      "id":"34354646"
    }

},
               suc:(data2)=>{
              console.log('登录信息'+JSON.stringify(data2));
          }

          });

          // 2. 安全获取昵称
          const name = data.nickName || data.name;
          if (name && name.trim() !== '') {
            this.nickName = name;
          } else {
            // 3. 如果没有昵称,不要显示手机号,显示默认称呼
            this.nickName = '华为用户'; 
          }
        }
      });
    },
    copyId() {
      uni.setClipboardData({
        data: this.unionID,
        success: () => {
          uni.showToast({
            title: '已复制',
            icon: 'none'
          });
        }
      });
    }
  }
};
</script>

<style scoped>
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #f5f5f5;
 }

 /* 用户卡片 */
 .profile-card {
   width: 80%;
   padding: 30px;
   background-color: #ffffff;
   border-radius: 20px;
   box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
   text-align: center;
 }

 /* 头像 */
 .avatar {
   width: 120px;
   height: 120px;
   border-radius: 50%;
   margin-bottom: 20px;
   border: 4px solid #fff;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
 }

 /* 昵称 */
 .name {
   font-size: 24px;
   font-weight: bold;
   color: #333;
   margin-bottom: 20px;
 }

 /* ID 容器 */
 .id-wrapper {
   display: flex;
   justify-content: center;
   align-items: center;
   padding: 12px 20px;
   background-color: #f9f9f9;
   border-radius: 16px;
   border: 1px solid #eaeaea;
 }

 .id-text {
   font-size: 14px;
   color: #666;
   margin-right: 10px;
 }

 /* 复制按钮 */
 .copy-btn {
   font-size: 14px;
   color: #007aff;
   background: none;
   border: none;
   padding: 0;
   margin: 0;
   cursor: pointer;
   line-height: 1.2;
 }

 /* 登录按钮 */
 .login-button {
   background-color: #007aff;
   color: white;
   border: none;
   padding: 12px 30px;
   border-radius: 10px;
   font-size: 16px;
 }
 </style>

开发文档

UTS 语法 UTS API插件 UTS uni-app兼容模式组件 UTS 标准模式组件 Hello UTS

隐私、权限声明

1. 本插件需要申请的系统权限列表:

需要开通云函数,云数据库,云存储的云开发工具

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

agc云函数会直接调用云数据库,云存储实现后端数据对接

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。