在小程序端开始使用Serverless服务前,需要先调用mpserverless.init
方法完成服务的初始化,且仅能初始化一次。较为通用的做法是在onLaunch
生命周期中进行初始化操作,并将实例对象mpserverless
挂载到小程序的全局对象App
,以便后续在其他文件中调用。
初始化原理
授权初始化
mpserverless.init();
客户端SDK在调用Serverless服务之前必须拥有一个合法的用户身份。
开发者通过调用
init
接口完成身份授权。在init
方法中,SDK会获取小程序用户的身份码authCode
。然后SDK将
authCode
发送到EMAS Serverless服务器。服务器会通过开发者在阿里云控制台配置的密钥或证书到小程序平台完成身份鉴权。
小程序平台获取到用户的
唯一身份ID
,返回给EMAS Serverless服务器。服务器会根据
spaceID
、appID
、以及用户的唯一身份ID
再生成一个Serverless平台的用户身份userID
。
原理图如下:客户端SDK在完成初始化后,和EMAS Serverless服务器建立了会话,会话的初始有效期为10分钟,每次调用服务都将延长会话有效期至30分钟。在会话有效期内,开发者可以调用getInfo方法获取当前授权用户的身份信息。
匿名初始化
mpserverless.init({
authorType: 'anonymous'
});
客户端SDK提供匿名初始化模式,使用匿名授权无需在阿里云控制台配置密钥。原理图如下:
SDK发起匿名初始化请求到EMAS Serverless服务器。
服务器会生成一个临时身份,SDK每次发起匿名授权都将获得不同的临时身份。
服务器将临时身份返回给SDK。
在支付宝小程序中初始化
步骤一、密钥配置
如果你选择匿名初始化,可以跳过此步骤。
准备工作:
下载并安装支付宝开放平台开发助手,支付宝开放平台开发助手用于在本地生成密钥或者证书。
您也可以选择使用阿里云KMS生成和保存小程序应用的RSA密钥,具体操作请参见使用阿里云KMS保护应用私钥。
授权初始化需要在阿里云控制台完成密钥配置:
按照下图所示,进入阿里云控制台与支付宝控制台对应页面,并使用已下载的支付宝开放平台开发助手,按照图中所示步骤完成密钥配置。
企业开发者若涉及资金类支付接口接入,必须使用公钥证书方式。
个人开发者不涉及到资金类接口,建议使用普通公钥方式进行加签。
步骤二、调用init方法
如果您选择授权初始化,则需要在
app.js
的onLaunch
生命周期中调用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.js
的onLaunch
生命周期中调用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.js
的onLaunch
生命周期中调用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();
},
});