В ZendService Twitter происходит сбой при подключении клиента ()

0

Проблемы с подключением к API Twitter через ZendService/Twitter/Twitter.

Error:  Fatal error: Call to a member function connect() on a non-object in somepath/vendor/zendframework/zendframework/library/Zend/Http/Client.php on line 1358



$config = array (
                'access_token' => array (
                        'token' => 'dummy',
                        'secret' => 'dummy' 
                ),
                'oauth_options' => array (
                        'consumerKey' => 'dummy',
                        'consumerSecret' => 'dummy' 
                ),
                'http_client_options' => array (
                        'adapter' => 'Zend\Http\Client\Adapter\Curl',
                        'curloptions' => array (
                                CURLOPT_SSL_VERIFYHOST => false,
                                CURLOPT_SSL_VERIFYPEER => false 
                        ) 
                ) 
        );

        $twitter = new Twitter ( $config );
        print_r ($twitter->account->verifyCredentials ());

Использование curl 7.26.0 (x86_64-pc-linux-gnu) OpenSSL/1.0.1e PHP 5.4.35 на ZF 2.3.3

Обновление 1: Удаление раздела access_token возвращает сообщение "Bad Authentication data". Включив его снова, вы получите атакующую ошибку: вызовите функцию-член connect() для не-объекта в somepath/vendor/zendframework/zendframework/library/Zend/Http/Client.php в строке 1358

Теги:
curl
twitter
zend-framework2
zend-http-client

1 ответ

1

Twitter позволяет использовать только SSL-соединения в конечных точках API Twitter. Эта деталь описана здесь. Таким образом, вам необходимо настроить параметры адаптера для соответствия требованиям протокола SSL.

Попробуй это:

'http_client_options' => array (
    'adapter' => 'Zend\Http\Client\Adapter\Curl',
    'curloptions' => array (
        CURLOPT_SSL_VERIFYHOST => 2,
        CURLOPT_SSL_VERIFYPEER => true,
        CURLOPT_CAINFO => '/path/to/certs/ca-bundle.pem'
    ) 
),

При проверке удаленного хоста вам необходимо предоставить один или несколько сертификатов доверенных ЦС. Значение 2 для опции VERIFYHOST требуется для проверки существования общего имени, а также для проверки того, что оно соответствует предоставленному имени хоста. Используйте 1 только для проверки наличия имени в сертификате SSL-партнера.

Вы также можете узнать больше о настройке SSL-соединений с помощью адаптера Curl в этом хорошем учебнике.

  • 0
    Ничего не изменилось после добавления ссылки CURLOPT_CAINFO => '/etc/ssl/certs/ca-bundle.crt'
  • 0
    Интересно. Вы пытались запустить это на производственном или промежуточном сервере? Вам также может понадобиться создать самозаверяющий сертификат для вашей локальной среды разработки. Например: akadia.com/services/ssh_test_certificate.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню