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