Oauth Hubspot Webhooks:重定向身份验证&;错误的授权类型消息

Oauth Hubspot Webhooks:重定向身份验证&;错误的授权类型消息,oauth,webhooks,hubspot,Oauth,Webhooks,Hubspot,我正在尝试在Hubspot中添加自定义应用程序。我正在使用PHP。我有: Hubspot应用程序 一个有效的webhook URL 包含以下代码的重定向URL $url = 'https://api.hubapi.com/oauth/v1/token'; $code = $_GET['code']; // Getting code parameter from redirect URL //echo $code; $fields = array(); $fields['grant_type'

我正在尝试在Hubspot中添加自定义应用程序。我正在使用PHP。我有:

  • Hubspot应用程序
  • 一个有效的webhook URL
  • 包含以下代码的重定向URL

    $url = 'https://api.hubapi.com/oauth/v1/token';
    $code =  $_GET['code']; // Getting code parameter from redirect URL
    //echo $code;
    $fields = array();
    $fields['grant_type'] = 'authorization_code'; // Have also tried 'refresh_token' - same result
    $fields['client_id'] = '{CLIENT_ID}';
    $fields['client_secret'] = '{CLIENT_SECRET}';
    $fields['redirect_uri'] = '{REDIRECT_URI}';
    $fields['code'] = trim($code);
    //$fields['refresh_token'] = trim($code);  // Have also tried 'refresh_token' - same result
    
    $request_type = 'POST';
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json', $headers));
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, POST); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_POST, 1);
    if($fields){
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $return = curl_exec($ch);
    curl_close($ch);
    echo var_dump ($return);    
    
  • 我的理解是Hubspot将使用传递给“authorization”URL上的的参数“code”来验证授权。然而,我不断地发现这个错误:

    string(171){“status”:“BAD_GRANT_TYPE”,“message”:“缺少或未知的授予类型”,“correlationId”:“f0508752-24bc-40e4-b0bc-51e358459653”,“requestId”:“96044613D4E4A5AAB7356FAB0401E5C”}“


    • 我有相同的错误响应,这似乎是一个编码问题

      我与Postman进行了调试,发现以下代码有效:

      <?php
      
      $curl = curl_init();
      
      curl_setopt_array($curl, array(
        CURLOPT_URL => "https://api.hubapi.com/oauth/v1/token",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => "grant_type=authorization_code&code=string&redirect_uri=string&client_id=string&client_secret=string",
        CURLOPT_HTTPHEADER => array(
          "content-type: application/x-www-form-urlencoded",
          "Cookie: __cfduid=someidfrompostman"
        ),
      ));
      
      $response = curl_exec($curl);
      
      curl_close($curl);
      echo $response;