我正在尝试为 Workday 实现 OAuth 2 客户端,但我正在尝试请求令牌。我可以调用授权端点,它使用授权代码重定向到我的回调就好了,但是当我尝试将授权代码发布到令牌端点时,我得到:
"{\"error\" : \"application=service - invalid_request\"}"
我在 request_uri 上尝试了不同的 URL 编码组合。我试过传递一个状态参数。我什至已经代理了电话,以确保我实际上发送了正确的信息。这是我为尝试检索令牌而编写的 PHP 代码。
function callback() {
$code = $_GET["code"];
log_message('info', 'Using code: ' . $code);
$url = "https://wd5-impl-services1.workday.com/ccx/oauth2/<redacted>/token";
$data = array(
'client_id' => '<redacted>',
'client_secret' => '<redacted>',
'grant_type' => 'authorization_code',
'code' => $code,
'redirect_uri' => 'https://<redacted>/account/callback'
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
$result = curl_exec($curl);
log_message('info', json_encode(curl_getinfo($curl)));
curl_close($curl);
log_message('info', json_encode($result));
#redirect(base_url()."account/login");
}
我有点不知道出了什么问题。我梳理了所有论坛,并尝试与有关其他 OAuth 2 服务器的对话进行比较,但我找不到任何关于我的具体问题的信息。有没有其他人用 Workday 成功地做到了这一点?