Команда повторной авторизации токена Autodesk Forge не распознает параметры - PullRequest
0 голосов
/ 08 мая 2019

Я использую Laravel / PHP на сервере для связи с системой Forge.Чтобы установить начальный токен, я использую набор инструментов жадности.Это отлично работает.

    // Get environment variables
    $FusionID = getenv('THISID');
    $FusionSecret = getenv('THISSECRET');

    // Make call to get token with authorization code, client id, and secret
    $client = new Client(); //GuzzleHttp\Client
    $response = $client->request('POST', 'https://developer.api.autodesk.com/authentication/v1/gettoken', [
        'form_params' => [
            'grant_type' => 'authorization_code',
            'code' => $authCode,
            'client_id' => $FusionID,
            'client_secret' => $FusionSecret,
            'redirect_uri' => 'https://www.example.com/redirect',
            'scope' => array('data'=>'create', 'data'=>'read')
        ]
    ]);
    $body = $response->getBody();
    $obj = json_decode($body);

Для многих других команд протокол жадности, похоже, имеет проблемы, поэтому я использовал команды прямого завитка.Однако я не могу заставить работать либо токен обновления.

Я проверил, что указанные ниже переменные содержат правильные данные, но я получаю ошибку, что

"developerMessage":"The required parameter(s) client_id,client_secret,grant_type not present in the request","userMessage":"","errorCode":"AUTH-008",

Я не уверен что делать.Кажется, что и метод сжимания, и метод сгибания не работают для меня.

        $thumbData = '{"client_id":"'.$FusionID.'", 
          "client_secret":"'.$FusionSecret.'", 
          "grant_type":"refresh_token", 
          "refresh_token":"'.$userInfo->refresh_token.'"}'; 


        $url = 'https://developer.api.autodesk.com/authentication/v1/refreshtoken';

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS,  $thumbData );
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/x-www-form-urlencoded'
        ));

        $response = curl_exec ($ch);
        $err = curl_error($ch);
        curl_close ($ch);

1 Ответ

0 голосов
/ 08 мая 2019

То, как вы отправляете данные x-www-form-urlencoded с помощью Guzzle, выглядит хорошо, поэтому остается вопрос: будет ли ваша версия Guzzle 6+, в противном случае используйте body вместо form_params в качестве параметра полезной нагрузки.

С помощью cURL тело запроса должно быть разделено & в формате x-www-form-urlencoded, как показано ниже, вместо `json:

curl_setopt($ch, CURLOPT_POSTFIELDS,
            "client_id=sb233&client_secret=2333&...");

...