Выполнение POST REQUEST с thephpleague / oauth2-client - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь сделать POST-запрос к API GETResponse (https://apidocs.getresponse.com/v3/case-study/adding-contacts) с thephpleague / oauth2-client и adespresso / oauth2-getresponse в качестве провайдера, например так:

  $data = [
            'email' => $email,
            'campaign' => [
                'campaignId' => $campId
            ]
        ];
    $request = $this->provider->getAuthenticatedRequest(
                        'POST',
                        'https://api.getresponse.com/v3/contacts',
                        $this->getMyAccessToken(),
                        $data
            );
    $response = $this->provider->getParsedResponse($request);

Iтакже пробовал эту передачу значения типа содержимого application / json в заголовках все безрезультатно.

$data = [ 'email' => $email, 'campaign' => [ 'campaignId' => $campId ] ];

    `$options['body'] = json_encode($data);
    $options['headers']['Content-Type'] = 'application/json';
    $options['headers']['access_token'] = $this->getMyAccessToken();
    $request = $this->provider->getAuthenticatedRequest(
                        'POST',
                        'https://api.getresponse.com/v3/contacts',
                        $options
            );
    $response = $this->provider->getParsedResponse($request); `

Однако функция getParsedResponse в обоих подходах возвращает следующее:

League \ OAuth2 \ Client \ Provider \ Exception \ IdentityProviderException (400) UnsupportedContentTypeheader.

1 Ответ

0 голосов
/ 09 ноября 2018

Я знаю, что уже поздно, но попробуйте этот код:

$data = array(
  'email' => $email,
  'campaign' => array([
    'campaignId' => $campId
    ])
);

$options['body'] = json_encode( $data );
$options['headers']['Content-Type'] = 'application/json';
$options['headers']['Accept'] = 'application/json';
$request = $this->provider->getAuthenticatedRequest( 'POST', 'https://api.getresponse.com/v3/contacts', $this->getMyAccessToken(), $options );
$response = $this->provider->getParsedResponse( $request );
...