更新:我认为我必须在请求体中将参数作为JSON字符串传递,但实际上我需要将它们放在URL(端点字符串)上,所以它现在正在工作。
我是Valence的新手。我有一些创建D2L用户的Salesforce Apex代码(由其他人编写)。代码工作正常。
我想添加一个Apex方法,使用userName参数检索现有D2L用户的信息。我已复制现有方法,更改为GET,将查询参数设置为userName,并保留其他所有方法。
当我调用我的方法时,我收到403 Invalid Token错误。
我是否需要为GET使用不同的授权参数?例如,我是否还需要包含时间戳?
这是Salesforce Apex代码的一部分:
public static final String USERS = '/d2l/api/lp/1.0/users/';
String TIMESTAMP_PARAM_VALUE = String.valueOf(Datetime.now().getTime()).substring(0,10);
String method = GETMETHOD;
String action = USERS;
String signData = method + '&' + action + '&' + TIMESTAMP_PARAM_VALUE;
String userSignature = sign(signData,USER_KEY);
String appSignature = sign(signData,APP_KEY);
String SIGNED_USER_PARAM_VALUE = userSignature;
String SIGNED_APP_PARAM_VALUE = appSignature;
String endPoint = DOMAIN + action + '?' +
APP_ID_PARAM + '=' + APP_ID + '&' +
USER_ID_PARAM + '=' + USER_ID + '&' +
SIGNED_USER_PARAM + '=' + SIGNED_USER_PARAM_VALUE + '&' +
SIGNED_APP_PARAM + '=' + SIGNED_APP_PARAM_VALUE + '&' +
TIMESTAMP_PARAM + '=' + TIMESTAMP_PARAM_VALUE;
HttpRequest req = new HttpRequest();
req.setMethod(method);
req.setTimeout(30000);
req.setEndpoint(endPoint);
req.setBody('{ "orgDefinedId"' + ':' + '"' + person.Id + '" }');
答案 0 :(得分:0)
我认为我必须在请求体中将参数作为JSON字符串传递,但实际上我需要将它们放在URL(端点字符串)上,所以它现在正在工作