当前位置: 首页 > news >正文

智能小程序登陆能力开发文档及示例代码

小程序登录

涂鸦官方提供了登录能力,开发者可以通过相关 API 获取 App 的用户身份标识,快速的建立小程序内的用户体系。

登录流程

说明
  1. 需要调用 ty.login() 获取 临时登录凭证 code,并将 code 传到开发者服务器
  2. 开发者服务器调用涂鸦云开发能力 API /1.0/token,传入 code,获取 access_token 及 uid,然后开发者根据 aceess_token 及 uid 自定义登录状态,并返回给前端,然后进行后续的交互。

注意:在开发小程序前,请先确保已经将小程序与云项目进行关联,关联方法请参考下面的服务器开发。

服务器开发

开发者服务器端要调用涂鸦云开发能力 API,需要创建云项目,并需要将云项目应用与小程序进行关联。

  • 使用 IoT 账号登录到 IoT 平台,选择云开发菜单,点击创建云项目

  • 创建成功后,即在云项目的详细页面中查询获取 Client ID 及 Client secret,用于请求 API 签名

 

  • 到小程序开发者平台,进入小程序开发设置菜单,点击云项目模块的 添加 按钮,然后选择对应的云项目关联。

相关文档:
  1. 云开发开发文档,可参考这里文档。
  2. API 签名机制,可参考这里

代码示例

小程序代码

import {getStorageSync,getSystemInfoSync,login,removeStorageSync,request,setStorageSync,getUserInfo,showModal,
} from '@ray-js/ray';const { code } = await login({});
const { nickName, avatorUrl } = new Promise((resolve, reject) =>getUserInfo({ success: resolve, failure: reject }),
);
request({url: `https://wwww.xxx.com/login`,method: 'POST',header: {'Content-Type': 'application/json',},data: {code,nickName,avatorUrl,},success: ({ data }: any) => {// 由于小程序没有 cookie,这时使用 storage 管理登录态setStorageSync({key: 'session',data,});},failure: () => {showModal({title: '提示',content: '登录失败',showCancel: false,});},
});

服务器端代码(这里使用 Nodejs Koa 实现)

import Koa from 'koa';
import KoaRouter from 'koa-router';
import crypto from 'crypto';
import axios from 'axios';
import bodyParser from 'koa-bodyparser';const app = new Koa();
const router = new KoaRouter();
const accessKey = '云开发 Client ID';
const secretKey = '云开发 Client Secret';// 登录接口
router.post(`/login`, async (ctx) => {const { code, nickName, avatorUrl } = ctx.request.body;// 加密处理const contentHash = crypto.createHash('sha256').update('').digest('hex');const t = +new Date();const nonce = '';const stringToSign = ['GET', contentHash, '', path].join('\n');const signStr = [accessKey, t, nonce, stringToSign].join('');const sign = crypto.createHmac('sha256', secretKey).update(signStr, 'utf8').digest('hex').toUpperCase();const { data } = await axios({// 不同的地区需要使用不同的域名地址,这里为中国区地址url: `https://openapi.tuyacn.com/v1.0/token?code=${code}&grant_type=2`,method: 'GET',headers: {t,sign,client_id: accessKey,sign_method: 'HMAC-SHA256',Dev_lang: 'Nodejs','Signature-Headers': '',},});let responseData;if (data.success) {const { uid } = data.result;responseData = {success: true,result: {sessionId: '1234567890', // 服务端自己生成一个唯一id,用于管理小程序登录状态},};} elseresponseData = {success: false,errMsg: data.msg,errCode: data.code,};{}ctx.body = responseData;
});app.use(bodyParser()).use(router.allowedMethods()).use(router.routes());app.listen(3000, async () => {console.log(`Server start on http://localhost:9000`);
});

相关文章:

智能小程序登陆能力开发文档及示例代码

小程序登录 涂鸦官方提供了登录能力,开发者可以通过相关 API 获取 App 的用户身份标识,快速的建立小程序内的用户体系。 登录流程 说明 需要调用 ty.login() 获取 临时登录凭证 code,并将 code 传到开发者服务器开发者服务器调用涂鸦云开发…...

常见の算法

前言本文主要使用Java 什么,是快乐星球#¥%……什么是算法? 算法是一组完成任务的指令。任何代码片段都可视为算法,但我们主要介绍常见算法 一、引入——二分查找 二分查找是一种算法,其输入是一个有序的元素列表。如…...

openssl3.2/test/certs - 041 - 1024-bit leaf key

文章目录 openssl3.2/test/certs - 041 - 1024-bit leaf key概述笔记END openssl3.2/test/certs - 041 - 1024-bit leaf key 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! * \file D:\my_dev\my_local_git_prj\study\openSSL\test_certs\041\my_openssl_linux_…...

「创新引领未来」科东软件荣获第十二届中国创新创业大赛(广东·广州赛区)优胜奖

近日,广州市科学技术局公布第十二届中国创新创业大赛(广东广州赛区)暨2023年广州科技创新创业大赛常规赛拟获奖企业名单。科东软件凭借国产化技术创新优势、强大的应用场景落地能力和丰富的行业解决方案,荣获第十二届中国创新创业…...

Linux下安装 Redis7

Linux下安装 Redis7 三、Linux下安装 Redis7【redis-7.2.4.tar.gz】3.1.下载redis的安装包3.1.1.手动下载Redis压缩包并上传【redis-7.2.4.tar.gz】3.1.2.wget工具下载redis-7.2.4.tar.gz 3.2.将安装包进行解压缩3.3.进入redis的安装包3.4.检查是否有gcc 环境3.5.编译和安装并指…...

spire.doc合并word文档

文章目录 spire.doc合并word文档1. 引入maven依赖2. 需要合并的word3. 合并文档代码4. 合并结果 spire.doc合并word文档 1. 引入maven依赖 <repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://r…...

蓝桥杯官网填空题(01串的熵)

问题描述 答案提交 这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。 import java.util.*;public class Main {public static void main(String[] args) {for(double zero1;zero<2333…...

【CodeTop】TOP 100 刷题 51-60

文章目录 51. 缺失的第一个正数题目描述代码与解题思路 52. 训练计划 II题目描述代码与解题思路 53. 子集题目描述代码与解题思路 54. 最小覆盖子串题目描述代码与解题思路 55. 从前序与中序遍历序列构造二叉树题目描述代码与解题思路 56. 零钱兑换题目描述代码与解题思路 57. …...

k8s的图形化工具---rancher

rancher是一个开源的企业级多集群的k8s管理平台。 rancher和k8s的区别&#xff1a;都是为了容器的调度和编排系统。但是rancher不仅可以调度还可以管理整个k8s集群。 rancher自带监控(普罗米修斯) 实验部署 master01 20.0.0.32 node01 20.0.0.34 node02 20.0.0.35 test …...

npm安装卡住问题(最新版)

npm安装卡住问题(最新版) 背景&#xff1a; ​ 最近这两天用npm安装一些包的时候&#xff0c;发现一直卡住&#xff1a; 报错&#xff1a; idealTree:npm: sill idealTree buildDeps之前能用的现在不能用了&#xff0c;我一想&#xff0c;是不是源头的问题&#xff0c;还真是…...

什么是线程死锁

死锁是指两个或两个以上的进程&#xff08;线程&#xff09;在执行过程中&#xff0c;由于竞争资 源或者由于彼此通信而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推 进下去。此时称系统处于死锁状态或系统产生了死锁&#xff0c;这些永远在互相…...

Django从入门到精通(二)

目录 三、视图 3.1、文件or文件夹 3.2、相对和绝对导入urls 3.3、视图参数requests 3.4、返回值 3.5、响应头 3.6、FBV和CBV FBV 四、静态资源 4.1、静态文件 4.2、媒体文件 五、模板 5.1、寻找html模板 5.2、模板处理的本质 5.3、常见模板语法 5.4、内置模板函…...

建筑物防雷检测安全接地应用解决方案

雷电是一种自然现象&#xff0c;具有极高的电压和电流&#xff0c;对建筑物及其内部设备、人员和财产可能造成严重的危害&#xff0c;如火灾、爆炸、电击、电磁干扰等。因此&#xff0c;建筑物必须采取有效的防雷措施&#xff0c;以保障建筑物的安全和可靠运行。建筑物防雷检测…...

支付宝小程序开发踩坑笔记(支付宝、学习强国小程序)

1、接口请求安卓端回调 success&#xff0c;IOS 端回调 fail 原因&#xff1a;dataType 设置不对&#xff0c;默认是 json 格式&#xff0c;对返回数据会进行 json 解析&#xff0c;如果解析失败&#xff0c;就会回调 fail 。加密传输一般是 text 格式。 2、input 禁止输入空格…...

如何降低微服务复杂度丨云栖大会微服务主题分享实录

作者&#xff1a;谢吉宝 本文整理自阿里云资深技术专家、中间件负责人谢吉宝在2023云栖大会《极简微服务模式&#xff0c;降低微服务复杂度的最佳实践》的分享 2023 云栖大会现场 当面临复杂的挑战时&#xff0c;"分而治之"的方法往往能取得显著的效果。微服务架构…...

openresty 安装, nginx与 openresty

openresty VS nginx Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;具备基础的功能如HTTP服务、负载均衡、反向代理以及动静分离等。它是许多互联网应用的核心组件&#xff0c;因其模块化和可扩展的设计而受到欢迎。1 OpenResty 是基于 Nginx 的 Web 平台&…...

puppeteer实现截图

Window服务器说明 1.在本地安装 puppeteer 先创建一个本地文件夹puppeteer&#xff0c;我的地址D:\common_workspace\puppeteer 然后使用cmd打开这个文件夹所在位置&#xff0c;再执行如下两条命令即可。 npm install -g cnpm --registryhttps://registry.npm.taobao.orgcnpm …...

【2024Java面试突击】并发编程、线程池面试实战

前言 最近在更新面试突击专栏&#xff0c;我把每一篇将字数都尽量控制在 2000 字以内&#xff0c;可能在文章里边写的没有那么细致&#xff0c;主要是提供一些 问题 以及 回答的思路 &#xff0c;以及 面试中可能忽略的漏洞 &#xff0c;所以在看完文章之后&#xff0c;如果自…...

ASUS华硕无畏Pro15笔记本电脑(M6500QB,M6500QH)工厂模式原厂OEM预装Windows11.22H2系统 含Recovery恢复

原装出厂Windows11系统适用于华硕无畏15笔记本电脑型号&#xff1a;M6500QB和M6500QH 链接&#xff1a;https://pan.baidu.com/s/1AVGLN6-ILIRogOMj48Mk1w?pwdmi7d 提取码&#xff1a;mi7d 带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题专用壁纸、系统属性联机支持…...

代码随想录算法训练营第三十天|51. N皇后

|51. N皇后 public List<List<String>> solveNQueens(int n) {List<List<String>> res new ArrayList<>();return null;}void backtracking1(int n, int row, int[] columns) {// 是否在所有n行里都摆放好了皇后?if (row n) {count;// 找到了…...

AK7739 TDM调试避坑指南:从tinymix命令到SA6125平台时钟极性BUG排查

AK7739 TDM音频接口深度调试&#xff1a;从寄存器配置到时钟极性异常实战解析 当我们在嵌入式音频系统中集成AK7739编解码器时&#xff0c;TDM&#xff08;时分复用&#xff09;接口的调试往往是工程师面临的最大挑战之一。不同于标准的I2S协议&#xff0c;TDM接口的高度可配置…...

初创团队如何利用Taotoken的Token Plan有效控制AI实验成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创团队如何利用Taotoken的Token Plan有效控制AI实验成本 对于资源有限的初创团队和独立开发者而言&#xff0c;在产品原型开发和…...

别只会改设置!Chrome/Edge浏览器主页被劫持的三种隐藏原因与根治方法

浏览器主页劫持的深度攻防&#xff1a;从表象到根源的终极解决方案 每次打开浏览器&#xff0c;那个陌生的主页是否让你感到烦躁&#xff1f;大多数人会直奔浏览器设置试图修改&#xff0c;却发现根本无效。这背后隐藏着远比表面设置更复杂的机制——快捷方式参数注入、注册表钩…...

hover-effect 性能优化:确保你的 WebGL 扭曲效果流畅运行

hover-effect 性能优化&#xff1a;确保你的 WebGL 扭曲效果流畅运行 【免费下载链接】hover-effect Javascript library to draw and animate images on hover 项目地址: https://gitcode.com/gh_mirrors/ho/hover-effect hover-effect 是一款基于 WebGL 的 JavaScript…...

汽车资讯网站|基于springboot+vue的汽车资讯网站(源码+数据库+文档)

汽车资讯网站 目录 基于springbootvue的汽车资讯网站 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff0c;阿里云开…...

如何轻松实现Cursor Pro破解:5步完整方案让AI编程助手永久免费使用

如何轻松实现Cursor Pro破解&#xff1a;5步完整方案让AI编程助手永久免费使用 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reac…...

服务器运维(四十八)linux删除无用依赖 —东方仙盟

一、逐条安全性分析1. sudo dnf autoremove -y作用&#xff1a;删掉安装软件后遗留的无用依赖包风险&#xff1a;极低禁忌&#xff1a;你现在只跑 nginxmysqllua&#xff0c;没有冷门依赖&#xff0c;随便跑效果&#xff1a;清大量残留库、编译依赖2. sudo dnf clean all作用&a…...

github拆分小批量上传文件

Windows端1.把项目重置干净Remove-Item -Recurse -Force tool/.git2.打开文件夹3.把里面所有东西 全部剪切移到桌面只留 1 个小小的文件 就行4.回到终端&#xff0c;依次运行git initPS D:\soft\github\tool> git init Initialized empty Git repository in D:/soft/github/…...

供应商风险评估,是怎么做的?我亲历的两家工厂对比

&#x1f3ce;️ SQE供应商质量管理实战系列 第3篇/共50篇供应商风险评估&#xff0c;是怎么做的&#xff1f;我亲历的两家工厂对比有一年&#xff0c;公司要给一款新车型采购某个零件&#xff0c;在全球范围内选供应商。有一年&#xff0c;公司要给一款新车型采购某个零件&am…...

从零到顶刊投稿,Perplexity辅助研究全流程,精准定位高影响力论文与方法论缺口

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity学术研究最佳实践概览 Perplexity 是衡量语言模型预测能力的核心指标&#xff0c;其数学定义为交叉熵的指数形式&#xff1a;\( PPL 2^{-\frac{1}{N}\sum_{i1}^{N}\log_2 p(w_i \mid w_{数据…...