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(): 获取当前用户IDPackages.cn.myapps.common.util.Security(): MyApps平台的Security工具类Security.getToken(userId): 根据用户ID获取tokengetParamsTable().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)
如需查看完整脚本代码,请访问源文档链接。