2

OAuth 2 クライアントを Workday に実装しようとしていますが、トークンを要求しようとしてハングアップしています。認証エンドポイントを呼び出すと、認証コードを使用してコールバックにリダイレクトされますが、認証コードをトークン エンドポイントにポストしようとすると、次のようになります。

"{\"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 でこれを成功させた人は他にいますか?

4

1 に答える 1