跳转至

token获取

本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f32q2eoapjgp

脚本说明

该脚本用于获取用户的访问令牌(token)。在MyApps平台中,token用于身份验证和授权,可以通过Security工具类获取用户的token。

常见实现方式

方式1:获取当前用户的token

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    return token;
})();

方式2:获取指定用户的token

(function(){
    var userId = "用户ID";

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    return token;
})();

方式3:获取token并格式化输出

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();
    var userName = currentUser.getName();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    var output = "用户: " + userName + "\n";
    output += "Token: " + token;

    return output;
})();

方式4:获取token并用于URL

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    // 构建带token的URL
    var url = "http://example.com/api?accessToken=" + token;

    return url;
})();

扩展示例

示例1:获取token并验证

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    if(token != null && token.trim().length > 0){
        return token;
    }else{
        return "错误: 无法获取token";
    }
})();

示例2:获取token并记录日志

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();
    var userName = currentUser.getName();

    println("开始获取token");
    println("用户ID: " + userId);
    println("用户名称: " + userName);

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    println("Token获取成功: " + token);

    return token;
})();

示例3:获取token并用于API调用

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    // 构建API请求URL
    var apiUrl = "http://api.example.com/data";
    var urlWithToken = apiUrl + "?accessToken=" + token;

    return urlWithToken;
})();

示例4:获取token并用于分享链接

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    var request = getParamsTable().getHttpRequest();
    var schema = request.getScheme();
    var serverName = request.getServerName();
    var port = request.getServerPort();
    var baseUrl = schema + "://" + serverName + ":" + port;

    // 构建分享链接
    var shareUrl = baseUrl + "/share?accessToken=" + token;

    return shareUrl;
})();

示例5:获取token并返回JSON格式

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();
    var userName = currentUser.getName();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    var result = {
        userId: userId,
        userName: userName,
        token: token
    };

    return JSON.stringify(result);
})();

示例6:获取token并设置过期时间(示例)

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    // 假设token有过期时间(具体实现可能不同)
    var expireTime = new Date();
    expireTime.setHours(expireTime.getHours() + 24);  // 24小时后过期

    var result = {
        token: token,
        expireTime: format(expireTime, "yyyy-MM-dd HH:mm:ss")
    };

    return JSON.stringify(result);
})();

示例7:错误处理和异常捕获

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    try{
        var Security = new Packages.cn.myapps.common.util.Security();
        var token = Security.getToken(userId);

        if(token == null || token.trim().length == 0){
            throw new Error("token获取失败");
        }

        return token;
    }catch(e){
        return "错误: " + e.getMessage();
    }
})();

示例8:获取token并用于表单跳转

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    var request = getParamsTable().getHttpRequest();
    var schema = request.getScheme();
    var serverName = request.getServerName();
    var port = request.getServerPort();
    var baseUrl = schema + "://" + serverName + ":" + port;

    var appId = getApplication();
    var formId = "表单ID";
    var url = baseUrl + "/static/portal/vue/index.html#/open?appId=" + appId + 
              "&linkType=00&actionContent=" + formId + 
              "&accessToken=" + token;

    return url;
})();

示例9:获取token并验证有效性

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    if(token != null && token.trim().length > 0){
        // 验证token格式(示例,具体验证规则可能不同)
        if(token.length > 10){
            return "Token有效: " + token;
        }else{
            return "错误: Token格式不正确";
        }
    }else{
        return "错误: 无法获取token";
    }
})();

示例10:获取token并用于文件下载

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();

    var Security = new Packages.cn.myapps.common.util.Security();
    var token = Security.getToken(userId);

    var request = getParamsTable().getHttpRequest();
    var schema = request.getScheme();
    var serverName = request.getServerName();
    var port = request.getServerPort();
    var baseUrl = schema + "://" + serverName + ":" + port;

    var fileId = "文件ID";
    var downloadUrl = baseUrl + "/file/download?id=" + fileId + "&accessToken=" + token;

    return downloadUrl;
})();

关键函数说明

  • getWebUser(): 获取当前登录用户对象
  • getWebUser().getId(): 获取当前用户ID
  • Packages.cn.myapps.common.util.Security(): MyApps平台的Security工具类
  • Security.getToken(userId): 根据用户ID获取token
  • getParamsTable().getHttpRequest(): 获取HTTP请求对象
  • request.getScheme(): 获取请求协议(http/https)
  • request.getServerName(): 获取服务器名称
  • request.getServerPort(): 获取服务器端口

Token说明

在MyApps平台中: - Token: 用于身份验证和授权的访问令牌 - Token用途: 用于API调用、分享链接、文件下载等需要身份验证的场景 - Token有效期: Token通常有过期时间,具体有效期取决于平台配置 - Token安全: Token应该妥善保管,避免泄露

注意事项

  • ⚠️ 用户ID: 确保用户ID正确,否则无法获取token
  • ⚠️ Token安全: Token是敏感信息,不要在不安全的地方存储或传输
  • ⚠️ Token过期: Token可能有过期时间,需要处理过期情况
  • ⚠️ 空值处理: Token可能获取失败,需要判断
  • ⚠️ URL编码: 在URL中使用token时,注意URL编码
  • Token用于身份验证,应该妥善保管
  • Token可以用于API调用、分享链接等场景
  • 建议在获取token后进行验证

使用场景

  • API调用时的身份验证
  • 分享链接的访问控制
  • 文件下载的权限验证
  • 外部系统集成
  • 单点登录(SSO)

如需查看完整脚本代码,请访问源文档链接。