Published at: 2025-10-30
1.3 [ShareCRM Task OA] Huawei WeLink Integration Case Study
Need-to-provide Information
Reference: https://open.welink.huaweicloud.com/docs/#/990hh0/whokyc/eatdqi
API Call Information
Application clientId:
Application secret clientSecret:
Step 1: Configure Result Format

Step 2: Account Binding

Step 3: To-Do (Task) Configuration
- Create Task
API endpoint: https://open.welink.huaweicloud.com/api/todo/v3/addtask
HTTP method: POST
Body parameters:
{
“taskId”: “#F012_#F001”,
“taskTitle”: “#F056 \nDocument No.: #F053 \n Submitter: #F054”,
“userId”: “#F001”, “detailsUrl”:”https://www.fxiaoke.com/erp/syncdata/open/oa/authorize/common/#F028/#F037/#F015/true?code=$(code)”,
“detailsUrlPc”:”https://www.fxiaoke.com/erp/syncdata/open/oa/authorize/common/#F028/#F037/#F015/false?code=$(code)”,
“appName”: “CRM”,
“applicantUserId”: “#F049”,
“isMsg”: 1,
“isShowApplicantUserName”:true,
“applicantId”:”#F012”,
“businessCode”:””
}

- Edit Task
API endpoint: https://open.welink.huaweicloud.com/api/todo/v1/deltask
HTTP method: PUT
Body parameters:
{
“taskId”: “#F012_#F001”,
“userId”: “#F001”
}

- Delete Task
API endpoint: https://open.welink.huaweicloud.com/api/todo/v1/deltask
HTTP method: DELETE
Body parameters:
{
“taskId”: “#F012_#F001”
}

Step 4: Configure Task Sync Function

Code example (TODoAll__c)
**
* @author ShareCRM Shen Jiaqi
* @codeName Integration_TaskRequestHandler
* @description Integration_TaskRequestHandler
* @createTime 2023-09-14
*/
log.info(“syncArg:”+Fx.json.toJson(syncArg))
String requestDataStr = syncArg[“requestData”] as String
Map<String,Object> requestData = Fx.json.parse(requestDataStr)
String urldata = syncArg[“url”] as String //Request URL, can be dynamic
if(urldata.contains(“updatetask”) || urldata.contains(“deltask”) ){
//Append parameters to URL
urldata=”?”;
requestData.each{
String k,Object v ->
urldata=urldata+k+”=”+v+”&”
}
urldata=urldata.substring(0,urldata.length()-1)
log.info(“urldata:”+urldata)
requestDataStr=null
}
Map header = [:]
String access_token = WeLinkUtils.getAccessToken(null)
header.put(“Accept-Charset”,”UTF-8’” )
header.put(“Content-Type”,”application/json”)
header.put(“x-wlk-Authorization”,access_token)
return [“header”:header,”url”:urldata,”requestData”:requestDataStr]
Step 5: Configure SSO (No-Login) Authorization URL Function

Code example (sync_ssoFunction__c)
/**
* @author ShareCRM Shen Jiaqi
* @codeName Integration_TaskSSORedirect
* @description Task SSO redirect
* @createTime 2023-09-14
*/
String url = syncArg[“oaConnectParam”][“ssoAuthUrl”] as String;
log.info(“url:”+url)
String code = syncArg[“params”][“requestParams”][“code”] as String;
log.info(“code:”+code);
String userId = WeLinkUtils.getUserid(code)
syncArg.put(“oaUser”,userId.trim()) //Always return third-party account under key “oaUser”
log.info(“syncArg:”+Fx.json.toJson(syncArg))
return syncArg