在小程序端开始使用Serverless服务前,需要先调用mpserverless.init方法完成服务的初始化,且仅能初始化一次。较为通用的做法是在onLaunch生命周期中进行初始化操作,并将实例对象mpserverless挂载到小程序的全局对象App,以便后续在其他文件中调用。

初始化原理

  • 授权初始化

mpserverless.init();

客户端SDK在调用Serverless服务之前必须拥有一个合法的用户身份。

  1. 开发者通过调用init 接口完成身份授权。在init方法中,SDK会获取小程序用户的身份码authCode

  2. 然后SDK将authCode发送到EMAS Serverless服务器。

  3. 服务器会通过开发者在阿里云控制台配置的密钥或证书到小程序平台完成身份鉴权。

  4. 小程序平台获取到用户的唯一身份ID,返回给EMAS Serverless服务器。

  5. 服务器会根据spaceIDappID、以及用户的唯一身份ID再生成一个Serverless平台的用户身份userID

原理图如下:授权初始化原理客户端SDK在完成初始化后,和EMAS Serverless服务器建立了会话,会话的初始有效期为10分钟,每次调用服务都将延长会话有效期至30分钟。在会话有效期内,开发者可以调用getInfo方法获取当前授权用户的身份信息。

  • 匿名初始化

mpserverless.init({
    authorType: 'anonymous'
});

客户端SDK提供匿名初始化模式,使用匿名授权无需在阿里云控制台配置密钥。原理图如下:匿名初始化原理

  1. SDK发起匿名初始化请求到EMAS Serverless服务器。

  2. 服务器会生成一个临时身份,SDK每次发起匿名授权都将获得不同的临时身份。

  3. 服务器将临时身份返回给SDK。

在支付宝小程序中初始化

步骤一、密钥配置

说明

如果你选择匿名初始化,可以跳过此步骤。

准备工作:

授权初始化需要在阿里云控制台完成密钥配置:

按照下图所示,进入阿里云控制台支付宝控制台对应页面,并使用已下载的支付宝开放平台开发助手,按照图中所示步骤完成密钥配置。

重要
  • 企业开发者若涉及资金类支付接口接入,必须使用公钥证书方式。

  • 个人开发者不涉及到资金类接口,建议使用普通公钥方式进行加签。

支付宝密钥配置——最终版

步骤二、调用init方法

  • 如果您选择授权初始化,则需要在app.jsonLaunch生命周期中调用init方法完成初始化

  • 如果您选择匿名初始化,可以在init方法中加入参数{authorType: 'anonymous'}

// app.js
import MPServerless from '@alicloud/mpserverless-sdk'

const mpserverless = new MPServerless(my, {
    appId: '小程序 AppID',
    spaceId: '服务空间 SpaceId',
    clientSecret: '服务空间 Secret',
    endpoint: '服务空间 API Endpoint',
    timeout: 40 * 1000
});

App({
    mpserverless: mpserverless,
    onLaunch() {
        mpserverless.init();
    },
});

在微信小程序中初始化

步骤一、密钥配置

按照下图所示,进入阿里云控制台微信小程序控制台的对应页面,按照图中所示步骤完成密钥配置。微信密钥配置——最终版

步骤二、调用init方法

  • 如果您选择授权初始化,则需要在app.jsonLaunch生命周期中调用init方法完成初始化

  • 如果您选择匿名初始化,可以在init方法中加入参数{authorType: 'anonymous'}

// app.js
import MPServerless from '@alicloud/mpserverless-sdk'

const mpserverless = new MPServerless(wx, {
    appId: '小程序 AppID',
    spaceId: '服务空间 SpaceId',
    clientSecret: '服务空间 Secret',
    endpoint: '服务空间 API Endpoint',
    timeout: 40 * 1000
});

App({
    mpserverless: mpserverless,
    onLaunch() {
        mpserverless.init();
    },
});

在钉钉小程序中初始化

步骤一、密钥配置

按照下图所示,进入阿里云控制台钉钉开放平台的对应页面,按照图中所示步骤完成密钥配置。钉钉密钥配置——最终版

步骤二、调用init方法

  • 如果您选择授权初始化,则需要在app.jsonLaunch生命周期中调用init方法完成初始化

  • 如果您选择匿名初始化,可以在init方法中加入参数{authorType: 'anonymous'}

// app.js
import MPServerless from '@alicloud/mpserverless-sdk'

const mpserverless = new MPServerless(dd, {
    appId: '小程序 AppID',
    spaceId: '服务空间 SpaceId',
    clientSecret: '服务空间 Secret',
    endpoint: '服务空间 API Endpoint',
    timeout: 40 * 1000
});

App({
    mpserverless: mpserverless,
    onLaunch() {
        mpserverless.init();
    },
});