403 GET用户信息上的令牌错误无效

时间:2014-09-29 15:48:13

标签: desire2learn valence

更新:我认为我必须在请求体中将参数作为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 + '" }');

1 个答案:

答案 0 :(得分:0)

我认为我必须在请求体中将参数作为JSON字符串传递,但实际上我需要将它们放在URL(端点字符串)上,所以它现在正在工作