小程序服务器api接口,百度智能小程序API 开放接口

登录

智能小程序可以通过百度官方提供的登录能力方便地获取百度提供的用户身份标识,快速建立智能小程序内的用户体系。

流程说明

1、调用 swan.login() 获取 临时登录凭证code ,并回传到开发者服务器。

2、开发者服务器以 code 换取 session_key。

3、调用 swan.getUserInfo() 获取用户信息。

4、点击查看详细流程。

login

解释: 调用接口 swan.login 获取 临时登录凭证(code)

参数: Object

Object参数说明:

参数名

类型

必填

说明

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数说明:

参数

类型

说明

code

String

用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用 api,使用 code 换取 session_key 等信息

示例:swan.login({

success: function (res) {

swan.request({

url: 'https://xxx/xxx', // 开发者服务器地址

data: {

code: res.code

}

});

},

fail: function (err) {

console.log('login fail', err);

}

});

登录凭证校验

临时登录凭证校验接口是一个 HTTPS 接口,开发者服务器使用 临时登录凭证(code) 获取 session_key。

注意:

1、会话密钥 session_key 是对用户数据进行加密签名的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到智能小程序,也不应该对外提供这个密钥。

2、临时登录凭证 code 只能使用一次。

接口地址:https://openapi.baidu.com/nalogin/getSessionKeyByCode

请求参数

参数

说明

client_id

开放平台申请的 App Key

sk

开放平台申请的 App Secret

code

swan.login 返回的临时登录凭证

Bug & Tip

1、tip: 调用 login 会引起登录态的刷新,之前的 session_key 可能会失效。

checkSession

解释:通过上述接口获得的用户登录态拥有一定的时效性,用户越久未使用智能小程序,用户登录态越有可能失效;反之如果用户一直在使用智能小程序,则用户登录态一直保持有效。具体时效逻辑由百度 App 维护,对开发者透明。开发者可以调用 swan.checkSession 接口 检测当前用户登录态是否有效,登录态过期后开发者可以再调用 swan.login 获取新的用户登录态。

参数:Object

Object参数说明:

参数名

类型

必填

说明

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

示例:

swan.checkSession({

success: function (res) {

console.log('登录态有效');

},

fail: function (err) {

console.log('登录态无效');

}

});

用户数据的签名验证和加解密

智能小程序可以通过各种前端接口获取百度提供的开放数据。考虑到开发者服务器也需要获取这些开放数据,百度会对这些数据做签名和加密处理。开发者后台拿到开放数据后可以对数据进行校验签名和解密,来保证数据不被篡改。

加密数据解密算法

接口如果涉及敏感数据,接口的明文内容将不包含这些敏感数据。开发者如需要获取敏感数据,需要对接口返回的加密数据(data)进行对称解密。

解密过程:开发者智能小程序(通过 swan.request)将加密数据发送至自身 Server 进行解密后返回智能小程序。

解密算法如下:

1、对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。

2、对称解密的目标密文为 Base64_Decode(data)。

3、对称解密秘钥 AESKey = Base64_Decode(session_key), AESKey 是24字节。

4、对称解密算法初始向量 为Base64_Decode(iv),其中iv由数据接口返回。

授权

authorize

解释:提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权智能小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。

参数:Object

Object参数说明:

参数名

类型

必填

说明

scope

String

需要获取权限的 scope,详见 scope 列表

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

scope 列表

scope

对应接口

描述

scope.userInfo

swan.getUserInfo

用户信息

scope.userLocation

swan.getLocation, swan.chooseLocation

地理位置

scope.writePhotosAlbum

swan.saveImageToPhotosAlbum

保存到相册

scope.address

swan.chooseAddress

收获地址

scope.invoiceTitle

swan.chooseInvoiceTitle

发票抬头

scope.record

swan.getRecorderManager

录音功能

scope.camera

摄像头

success返回参数说明:

参数名

类型

说明

errMsg

String

调用结果

示例:

swan.authorize({

scope: 'scope.userLocation',

success: function (res) {

// 用户已经同意智能小程序使用定位功能

swan.getLocation();

}

});

Bug & Tip

1、tip: 授权操作为异步操作,完成前请不要多次调用。

用户信息

swanid 机制说明

swanid 是用户使用智能小程序时的标识符,开发者可以通过 swanid 来区分用户的唯一性。

1、用户在非登陆情况下使用智能小程序时,在同一台设备上使用同一个开发者所开发的不同智能小程序,得到的是相同的 swanid。2、用户在登陆情况下使用智能小程序时,在多台不同设备上使用同一个开发者所开发的不同智能小程序,得到的是相同的 swanid。3、用户使用同一台设备时,在非登陆情况下与登陆情况下使用同一个智能小程序,得到的 swanid 是不同的。

getSwanId

解释:获取 swanid。

参数:Object

Object参数说明:

参数名

类型

必填

说明

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数

类型

说明

errno

String

errno

data

Object

{swanid}

errmsg

String

errmsg

示例:swan.getSwanId({

success: function (res) {

console.log(res.data.swanid);

}

});

getUserInfo

解释:获取用户信息

参数:Object

Object参数说明:

参数名

类型

必填

说明

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数

类型

说明

userInfo

Object

用户信息对象

data

String

包括敏感数据在内的完整用户信息的加密数据,加解密逻辑参考用户数据的签名验证和加解密

iv

String

加密算法的初始向量

userInfo参数说明:

参数

类型

说明

nickName

String

用户名

avatarUrl

String

用户头像

gender

String

性别

示例:

swan.getUserInfo({

success: function (res) {

console.log('用户名', res.nickName);

}

});

设置

openSetting

解释:调起客户端智能小程序设置界面,返回用户设置的操作结果。

参数:Object

Object参数说明:

参数名

类型

必填

说明

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数

类型

说明

authSetting

Object

用户授权结果,其中 key 为 scope 值,value 为 Bool 值,表示用户是否允许授权

示例:

swan.openSetting({

success: function (res) {

console.log(res.authSetting['scope.userInfo']);

console.log(res.authSetting['scope.userLocation']);

}

});

getSetting

解释:获取用户的当前设置

参数:Object

Object参数说明:

参数名

类型

必填

说明

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数

类型

说明

authSetting

Object

用户授权结果,其中 key 为 scope 值,value 为 Bool 值,表示用户是否允许授权

示例:

swan.getSetting({

success: function (res) {

console.log(res.authSetting['scope.userInfo']);

console.log(res.authSetting['scope.userLocation']);

}

});

分享

onShareAppMessage

解释:在 Page 中定义 onShareAppMessage 函数,设置该页面的分享信息。

用户点击分享按钮的时候会调用

此事件需要 return 一个Object,用于自定义分享内容

参数:Object

Object参数说明:

参数名

类型

说明

from

String

分享事件来源。button:页面内转发按钮;menu:右上角分享菜单

currentTarget

Object

如果 from 值是 button,则 currentTarget 是触发这次转发事件的 button,否则为 undefined

自定义分享字段:

参数名

类型

必填

说明

title

String

分享标题

content

String

分享内容

imageUrl

String

分享图标

path

String

页面 path ,必须是以 / 开头的完整路径

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

示例:Page({

onShareAppMessage() {

return {

title: '智能小程序示例',

content: '世界很复杂,百度更懂你',

path: '/pages/openShare/openShare?key=value'

};

}

});

Bug & Tip

1、bug: iOS 点击分享面板的取消时,会执行 fail,Android 不会执行。

收获地址

chooseAddress

解释:调起用户编辑收货地址原生界面,并在编辑完成后返回用户选择的地址。

需要用户授权 scope.address

参数:Object

Object参数说明:

参数名

类型

必填

说明

success

Function

返回用户选择的收货地址信息

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数名

类型

说明

errMsg

String

调用结果

userName

String

收货人姓名

postalCode

String

邮编

provinceName

String

国标收货地址第一级地址

cityName

String

国标收货地址第二级地址

countyName

String

国标收货地址第三级地址

detailInfo

String

详细收货地址信息

telNumber

String

收货人手机号码

示例:

swan.chooseAddress({

success: function (res) {

console.log(res.userName);

console.log(res.postalCode);

console.log(res.provinceName);

console.log(res.cityName);

console.log(res.countyName);

console.log(res.detailInfo);

console.log(res.telNumber);

}

});

聚合收银台支付

requestPolymerPayment

版本:百度 App 10.7.0 版本开始支持。

解释:百度聚合收银台,聚合了主流的百度钱包、微信、支付宝、网银等多种支付方式,方便开发者一站式快速接入多种支付渠道,让百度用户能在智能小程序场景下,直接完成支付、交易闭环,提升用户支付体验的同时,提高智能小程序的订单转化率。

参数:Object

Object参数说明:

参数名

类型

必填

说明

orderInfo

Object

订单信息

bannedChannels

StringArray

需要隐藏的支付方式

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

orderInfo 参数说明:

dealId: 跳转百度收银台支付必带参数之一,是百度收银台的财务结算凭证,与账号绑定的结算协议一一对应,每笔交易将结算到dealId对应的协议主体。

appKey: 用以表示应用身份的唯一ID,在应用审核通过后进行分配,一经分配后不会发生更改,来唯一确定一个应用。

totalAmount: 订单金额,单位为人民币分。

tpOrderId: 商户平台自己记录的订单ID,当支付状态发生变化时,会通过此订单ID通知商户。

dealTitle: 订单的名称。

rsaSign: 对appKey+dealId+tpOrderId进行RSA加密后的密文,防止订单被伪造。签名过程见 百度电商开放平台:签名与验签

bizInfo: 订单详细信息,需要是一个可解析为JSON Object的字符串。字段内容见: 百度电商开放平台:收银台接入

bannedChannels 参数说明:

channel

说明

Alipay

支付宝

BDWallet

百度钱包

WeChat

微信支付

示例:swan.requestPolymerPayment({

orderInfo: {

"dealId": "470193086",

"appKey": "MMMabc",

"totalAmount": "1",

"tpOrderId": "3028903626",

"dealTitle": "智能小程序Demo支付测试",

"rsaSign": '',

"bizInfo": ''

},

success: function (res) {

swan.showToast({

title: '支付成功',

icon: 'success'

});

},

fail: function (err) {

swan.showToast({

title: JSON.stringify(err)

});

console.log('pay fail', err);

}

});

获取发票抬头

chooseInvoiceTitle

解释:选择用户的发票抬头。

需要用户授权 scope.invoiceTitle

参数:Object

Object参数说明:

参数名

类型

必填

说明

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数名

类型

说明

type

String

抬头类型(0:单位,1:个人)

title

String

抬头名称

taxNumber

String

抬头税号

companyAddress

String

单位地址

telephone

String

手机号码

bankName

String

银行名称

bankAccount

String

银行账号

errMsg

String

接口调用结果

示例:swan.chooseInvoiceTitle({

success: function (res) {

console.log(res.type);

console.log(res.title);

console.log(res.taxNumber);

console.log(res.companyAddress);

console.log(res.telephone);

console.log(res.bankName);

console.log(res.bankAccount);

}

})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

约束,MySQL约束,非空默认值,主键外键唯一自增,完整详细可收藏

文章目录1. 约束(constraint)概述2. 非空约束3. 唯一性约束4. PRIMARY KEY 约束5. 自增列:AUTO_INCREMENT6. FOREIGN KEY 约束7. CHECK 约束8. DEFAULT约束9. 面试1. 约束(constraint)概述 1.1 为什么需要约束 数据完整性(Data Integrity)是…

如何测试Java类的线程安全性

我在最近的一次网络研讨会中谈到了这个问题,现在是时候以书面形式进行解释了。 线程安全是Java等语言/平台中类的重要品质,我们经常在线程之间共享对象。 缺乏线程安全性导致的问题很难调试,因为它们是零星的并且几乎不可能有意复制。 您如何…

阴阳师服务器维护稍后,《阴阳师》手游3月20日维护更新公告

亲爱的阴阳师大人:为了给大家带来更好的游戏体验,服务器将于3月20日(周三)早上6:30-9:00进行停服维护,如未能按时完成,则开服时间将会顺延。具体更新详情请留意稍后更新公告,或例行维护结束后至游戏登录界面查看。例行…

争议?MySQL存储过程与函数,封装,体,完整详细可收藏

文章目录1. 存储过程概述2. 创建存储过程3. 调用存储过程4. 存储函数的使用5. 存储过程和函数的查看、修改、删除6. 关于存储过程使用的争议MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部…

梦幻,MySQL视图,虚实表,完整详细可收藏

文章目录1. 数据库对象2. 视图概述3. 创建视图4. 查看视图5. 更新视图的数据6. 修改、删除视图7. 总结1. 数据库对象 2. 视图概述 2.1 为什么使用视图? 视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视…

php cdi_DI / CDI –基础

php cdi简介(DI / CDI基础) 首先,我认为对此会有一些困惑,但事实是,它们是相同的–不同之处在于用法及其用途。 DI(依赖项注入)是一个通用术语–此功能基本上是在任何应用程序上进行Bean发现和…

一条一条来,MySQL变量、流程控制与游标,完整详细可收藏

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) 文章目录1. 变量2. 定义条件与处理程序3. 流程控制4. 游标MyS…

ajax渲染后的点击事件,在ajax调用后渲染“喜欢”按钮

有几个问题类似于我的堆栈,但没有一个回答我的问题,所以…ajax调用返回用于创建类似按钮的标准HTML代码:当使用’inspect element’查看时,这个html确实显示在源中,但没有呈现,即按钮应该是空白的空格。有没…

无服务器:SLAppForge Sigma入门

! Cmere。 寻找某事? 无服务器,是吗? 在上面。 进入海峡,在“ Sigma”标志处右转。 (嗯,还不要怪我们;至少我们认为这很容易!) 我们的梦想目标之一是与S…

pks系统如何添加服务器,pks服务器的上电步骤.pdf

PKS 服务器的上电步骤一、服务器的安装与设置服务器为 DELL PowerEdge 2900 ,配置为内存 2GB (2x1GB), 667MHz, ECC,Single-Rank ,CPU 为 Quad-Core Intel Xeon Pro E5405 2GHz, 12MB Cache,1333MHz FSB ,硬盘 2 个: 146GB, 3.5&q…

自动,MySQL触发器,完整详细可收藏

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) 文章目录1. 触发器概述2. 触发器的创建3. 查看、删除触发器4.…

统计信号处理基础 - 估计与检测理论 估计部分习题3.7公式推导

统计信号处理基础 - 估计与检测理论 估计部分习题3.7公式推导题目证明结论得证题目 相信学习信号检测与估计的童鞋们肯定看到过Steven M.Kay大牛的书,非常厚的一本,不得不说,人家的书就是写得好,浅显易懂(当然是要从头…

ajax表格内容加按钮,单击按钮时,如何触发jquery数据表fnServerData通过AJAX更新表?...

我正在将datatables插件与服务器端数据一起使用,并使用AJAX更新表。我的dataTables设置如下所示:tblOrders parameters.table.dataTable( {"sDom": t,"sAjaxSource": "../file.cfc","bServerSide": true,"…

统计1到N的整数中,除了1和自身之外,至少还能被两个数整除的数的个数Java开方平方根

使用开方是重点。 import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int N scanner.nextInt(); //输入Nint count 0;for (int i 1; i < N; i) { //统计1-N中符合条件的if (fun(i)){count…

机器学习大作业《Kaggle赛题之Kannada MNIST研究》论文和Python代码

一、赛题概述及分析 1、背景介绍 邮政系统每天都会处理大量的信件&#xff0c;最为要紧的一环是要根据信件上的收信人邮编进行识别和分类&#xff0c;以便确定信件的投送地。原本这项任务是依靠大量的人工来进行&#xff0c;后来人们尝试让计算机来替代人工。然而&#xff0c…

neo4j图形界面_图形处理:betweeness中心性– neo4j的密码与graphstream

neo4j图形界面上周&#xff0c; 我写了关于中间性中心算法以及我尝试使用graphstream 理解它的尝试 &#xff0c;在阅读源代码的同时&#xff0c;我意识到我可以使用neo4j的所有最短路径算法将某些东西放在一起。 概括地说&#xff0c;中间性中心度算法用于确定图中节点的负载…

打开服务器文件提示内存不够,打开服务器文件提示内存不够

打开服务器文件提示内存不够 内容精选换一换本节操作指导您完成Windows操作系统云服务器磁盘空间清理。弹性云服务器匀出一部分磁盘空间来充当内存使用&#xff0c;当内存耗尽时&#xff0c;云服务器可以使用虚拟内存来缓解内存的紧张。但当内存使用率已经非常高时&#xff0c;…

【自适应(盲)均衡1】LMMSE、Godard、CMA常模、Sato等算法在信道均衡中的应用理论与MATLAB仿真(代码见CSDN同名资源)

1.实验背景 考虑如图所示的基带等效数据传输系统,发送符号经过ISI失真信道传输,叠加高斯加性白噪声。 设发送信号采用QPSK调制,即 x k = ( 1 j ) / 2 {x_k} = ( \pm 1 \pm j)/\sqrt 2 x

Java代码样式运算符换行格式

上周&#xff0c;我发现了什么决定了我长期以来苦苦挣扎的决定&#xff1a;是否放置&& &#xff0c; ||之类的运算符。 或在同一行或下一行。 在构造布尔表达式或隐含字符串时&#xff0c;我们可能需要中断长行。 根据《 Google Java样式指南》 &#xff0c;该中断应出…

在一个由小写英文字母(a-z)组成的字符串中,查找最长子串,其头尾字母相同,且中间不包含该头尾字母,并输出最左边的该类子串

输入&#xff1a; ①adfasjdoiasldhlfa ②a ③aa ④abcd 输出&#xff1a; ①fasjdoiasldhlf ②a ③aa ④a import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);String str scanner.next();Str…