0
更新:我认为我必须将参数作为JSON字符串传递到请求正文中,但实际上我需要将它们放在URL(端点字符串)上,因此它现在正在工作。403 GET用户信息上的令牌错误无效
我是新来的瓦朗斯。我有一些创建D2L用户的Salesforce Apex代码(由其他人编写)。代码工作正常。
我想添加一个Apex方法来检索使用userName参数的现有D2L用户的信息。我复制了现有的方法,更改为GET,将查询参数设置为userName,并保持其他所有内容相同。
当我调用我的方法时,出现403无效令牌错误。
我是否需要为GET使用不同的授权参数?例如,我是否还需要包含时间戳?
这里是Salesforce的顶点部分代码:
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 + '" }');
我已经回复了您在ValenceUsers论坛上发布的帖子:https://groups.google.com/forum/#!topic/valenceusers/BcZHCQ4-hOI – 2014-09-30 15:12:59
谢谢,那让我走上了正确的轨道,我想出了我做错了什么。我想我需要传递一个JSON字符串,但我当然需要传递常规URL参数。 – 2014-10-01 16:18:26