分享场景
更新时间:
复制为 MD 格式
空间数据可视化中的二维/三维数据可视化服务支持分享场景,本文介绍如何分享已创建的场景。
二维/三维数据可视化服务的分享场景功能有两种授权方式:授权登录访问和免登录访问。
前提条件
操作步骤
- 登录物联网平台控制台,单击。
- 在实验室功能模板中,定位到空间数据可视化,并单击查看详情。
- 在空间数据可视化页面的二维数据可视化或三维数据可视化页签,单击已创建的场景,进入详情页面。
- 在界面右上角单击分享。
- 授权登录访问
通过授权手机号码分享场景,适合单独使用二维/三维数据可视化服务的场景。
表 1. 参数说明 参数 描述 分享链接 由空间数据可视化服务自动生成的,即将分享的场景链接,被授权的手机号访问该链接查看场景。 单次登录有效时间 被授权的手机号码用户单次登录场景的有效时间。 授权手机号 输入需要授权的手机号码,最多分享给10个手机号码。 被授权的手机号,访问分享链接后需要通过手机号码和短信验证码登录页面。 - 免登录访问
该分享方式会生成一个无需登录就能访问的URL,用户通过该URL直接访问已编辑好的二维/三维数据可视化场景,适合需要将二维/三维数据可视化做嵌入集成的用户或企业。
表 2. 参数说明 参数 描述 URL 由空间数据可视化服务自动生成的,即将分享的场景链接。可免登录访问。 Token URL的Token。该Token是生成访问URL的唯一凭证,请妥善保管,一旦泄露,会造成您已编辑的二维/三维数据可视化场景泄露。单击右侧复制,可复制该Token。 测试链接 由空间数据可视化服务生,用户使用此链接地址进行免登录访问测试。 单次登录有效时间 有两种有效时间。 - 10小时:生成的URL只能使用10小时进行访问,超过该期限后,您需要使用页面上的Token来主动生成新的访问URL。详情请见本文下方Token生成免登录访问URL。
- 永久:生成的URL永久有效,若需要更新URL,请单击右侧的刷新重新生成新的URL。 重要 永久有效的URL可以一直访问使用,请您自行确认风险。
- 授权登录访问
Token生成免登录访问URL
本小节讲述了生成免登录访问URL的开源算法,并提供部分语言示例。
Token生成免登录访问URL的算法为开源算法,用以下步骤即可生成。
- 在二维/三维数据可视化分享窗口中,复制免登录访问URL和Token。 例如,复制一个如下所示二维数据可视化场景的URL和Token。
- URL:
https://gis.aliyun-iot-share.com/auth/gis/{hashToken}/test1234567890 - Token:
abc
说明 如果仅测试免登录访问功能,请在测试链接右侧单击复制,可直接在浏览器中访问该二维/三维数据可视化场景。 - URL:
- 对Token进行bcrypt运算,生成midToken。 对上述二维数据可视化场景示例中的Token:
abc进行bcrypt运算后,获得如下返回结果。说明 由于bcrypt算法特性,每次进行bcrypt运算后获得的midToken结果都不同。$2a$10$td0GQDWPLnE98pRHaFB/n.FYG5979ATZ4uXVPVw7f3omKUFOHtj.K - 对bcrypt运算后的结果(即midToken)进行base64加密,生成hashToken。 对上一步获得的示例midToken进行base64加密后获得如下结果。
JDJhJDEwJHRkMEdRRFdQTG5FOThwUkhhRkIvbi5GWUc1OTc5QVRaNHVYVlBWdzdmM29tS1VGT0h0ai5L - 将base64编码后的结果替换进免登录访问URL中的
{hashToken}即可生成免登录访问URL。您的免登录访问URL格式如下。
- 二维数据可视化:
https://gis.aliyun-iot-share.com/auth/gis/{hashToken}/xxx - 三维数据可视化:
https://bim.aliyun-iot-share.com/auth/bim/{hashToken}/xxx
即,将步骤3中获得的结果,替换到步骤1中复制出来的URL中,则获得如下可分享给其他用户的免登录访问链接,单次登录时效为10小时。https://gis.aliyun-iot-share.com/auth/gis/JDJhJDEwJHRkMEdRRFdQTG5FOThwUkhhRkIvbi5GWUc1OTc5QVRaNHVYVlBWdzdmM29tS1VGT0h0ai5L/test1234567890您只需要在URL的有效期内重复以上步骤,生成新的URL,替换旧的URL即可。
- 二维数据可视化:
下面用几种语言举例描述Token生成免登录访问URL的过程。由于算法为开源算法,未列举的语言可自行查找实现。
- Java实现
import org.apache.commons.codec.binary.Base64; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; public class TokenUtil { private static final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); public static String encodeBase64(String encodedStr) { byte[] debytes = Base64.encodeBase64(encodedStr.getBytes()); return new String(debytes); } public static String encodeBCrypt(String token){ return encoder.encode(token); } public static void main(String[] args) { String token = "123456"; //页面上的token String midToken = TokenUtil.encodeBCrypt(token);//生成中间token String hashToken = TokenUtil.encodeBase64(midToken); //生成hashToken String URL = "https://gis.aliyun-iot-share.com/auth/gis/" + hashToken + "/xxx"; System.out.println("您的分享url为: " + URL); } } - Node.js实现
var bcrypt = require('bcryptjs'); const saltRounds = 10; const salt = bcrypt.genSaltSync(saltRounds); const token = "123456" //页面上的token const midToken = bcrypt.hashSync(token, salt);//生成中间token const midTokenBuf = new Buffer(midToken); const hashToken = midTokenBuf.toString('base64');//生成hashToken const url = "https://gis.aliyun-iot-share.com/auth/gis/" + hashToken + "/xxx"; console.info("您的分享url为: " + url) - Python实现 (Python 3.0版本)
# coding=utf-8 import bcrypt import base64 if __name__ == '__main__': # Program start from here token = b"123456" # 页面上的token midToken = bcrypt.hashpw(token, bcrypt.gensalt(prefix=b"2a")) # 中间token hashToken = base64.b64encode(midToken).decode()#生成hashToken url = "https://gis.aliyun-iot-share.com/auth/gis/" + hashToken + "/xxx" print ("您的分享url为: " + url)
该文章对您有帮助吗?