uni-app 抖音和支付宝的SDK在uniCloud阿里云上的安装问题

发布于 1周前 作者 eggper 来自 Uni-App

uni-app 抖音和支付宝的SDK在uniCloud阿里云上的安装问题

操作步骤

参看bug描述

预期结果

希望能正常使用

实际结果

参看bug描述

bug描述

两个SDK的官网链接如下:

  1. 支付宝Alipay SDK
  2. 抖音OpenAPI SDK

uniCloud服务端的nodejs版本用的是uniCloud阿里云当前已安装的最新版20.10.0。

支付宝SDK升级alipay-sdk v3 到 v4 时,用NPM下载了官网的源文件后,上传到uniCloud报错找不到index文件,无法上传安装,把package.json文件中的一些路径中的./符号删去后可以正常安装依赖,但用支付宝官网提供的方式引用SDK就报错ReferenceError: MessagePort is not defined,加不加.default都一样,用回V3版又正常。这个问题之前在dcloud论坛发过,原帖是uniCloud升级Alipay SDK版本后报错,但很多天没回应,无奈只好多次发帖,甚至提交bug。

抖音SDK用NPM下载了官网的源文件后,上传到uniCloud也报错The file “index.js” cannot be found,自建空白index.js文件后提示上传成功。然后再用抖音官网的使用方式测试SDK,报错Cannot find module ‘open_api_sdk’
Require stack:……

支付宝SDK引用方式尝试过以下几种:

  1. const AlipaySdk = require('alipay-sdk');
  2. const {AlipaySdk }= require('alipay-sdk');
  3. const AlipaySdk = require('alipay-sdk').default;
  4. const {AlipaySdk} = require('alipay-sdk').default;

在本机的Node.js的v22.12.0版本的Express 框架里用第2种方式可以正常使用支付宝SDK v4。

抖音SDK引用方式尝试过以下几种: 1. javascript const Client, {MessageGetUserMessageRequest} = require('open_api_sdk'); const CredentialClient = require('open_api_credential'); 2. javascript const {Client, MessageGetUserMessageRequest} = require('open_api_sdk'); const CredentialClient = require('open_api_credential');

以上方式在uniCloud阿里云上使用都不行。我前些天在支付宝社区发帖请教此事,有说新版本的运行环境不支持Web Worker特性的,也有说可能新版本的SDK不完全兼容Node.js环境的,我很是迷茫,不知所措,但又急用。

这个问题在Dcloud社区发帖多次,包括提交bug,从去年12月9号提出uniCloud阿里云默认的node.js版本问题到现在,一个月至少发了5篇帖子了,这5篇帖子中,只有第一篇帖子提出的uniCloud阿里云默认的node.js版本问题得到了解决,从18提升到20,但SDK的问题重复发了4篇帖子,在将近一个月的时间只潦草回复了一次,而且回复了一半没下文了,依然没有解决方案,请问是要劝退使用uniCloud吗?哪怕一时半会儿没有解决方案,回复及时一点儿也行啊。

相关链接

开发环境、版本号、项目创建方式

详情
Node.js 版本 uniCloud阿里云当前已安装的最新版20.10.0
支付宝SDK版本 alipay-sdk v3 到 v4
抖音SDK版本 open_api_sdk
本地Node.js版本 v22.12.0
Express框架版本 未提及

3 回复

稍等,我再给您call一下


好的,非常感谢!

在处理uni-app中集成抖音和支付宝SDK,并部署在uniCloud阿里云上的问题时,主要涉及到几个步骤:下载SDK、配置环境、编写集成代码、以及部署到uniCloud。以下是一个简要的代码示例和步骤指南,帮助你理解如何在uni-app项目中集成这些SDK,并部署到uniCloud阿里云。

1. 下载SDK

首先,你需要从抖音和支付宝的官方渠道下载最新的SDK。通常,这些SDK会提供压缩包,包含必要的库文件和集成文档。

2. 配置uni-app项目

manifest.json中配置SDK的权限和依赖,例如:

{
  "mp-weixin": {
    "appid": "your-weixin-appid",
    "setting": {
      "urlCheck": false
    },
    "usingComponents": true
  },
  "permissions": {
    "scope.userInfo": {
      "desc": "你的用户信息将用于抖音/支付宝登录"
    }
  },
  "sdkConfigs": {
    "alipay": {
      "appId": "your-alipay-appid"
    },
    "douyin": {
      "appId": "your-douyin-appid",
      "appSecret": "your-douyin-appsecret"
    }
  }
}

3. 编写集成代码

支付宝SDK集成示例

pages/index/index.vue中:

<template>
  <view>
    <button @click="alipayLogin">支付宝登录</button>
  </view>
</template>

<script>
export default {
  methods: {
    alipayLogin() {
      my.getAuthCode({
        scopes: 'auth_user',
        success: (res) => {
          console.log('支付宝授权码:', res.authCode);
          // 使用authCode进行后端验证和登录
        },
        fail: (err) => {
          console.error('支付宝登录失败:', err);
        }
      });
    }
  }
}
</script>

抖音SDK集成示例

抖音SDK的集成通常涉及更多的步骤,包括初始化SDK、配置回调等。由于篇幅限制,这里只展示基本的初始化代码:

// 在App.vue或main.js中初始化
import DouyinSDK from 'path-to-douyin-sdk';

const douyin = new DouyinSDK({
  appId: 'your-douyin-appid',
  appSecret: 'your-douyin-appsecret'
});

douyin.init({
  onLoginSuccess: (userInfo) => {
    console.log('抖音登录成功:', userInfo);
  },
  onLoginFail: (err) => {
    console.error('抖音登录失败:', err);
  }
});

4. 部署到uniCloud阿里云

确保你的uniCloud配置正确,并已经创建了相应的云函数和服务。使用HBuilderX的“发行”功能,选择“云端一体”模式,将项目部署到uniCloud阿里云。

注意:以上代码仅为示例,实际集成过程中可能需要根据你的项目需求进行调整,并参考抖音和支付宝SDK的官方文档进行更详细的配置和调试。

回到顶部