0

ZendService/Twitter/Twitter を介した Twitter API との接続に問題があります。

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 ());

ZF 2.3.3 で curl 7.26.0 (x86_64-pc-linux-gnu) OpenSSL/1.0.1e PHP 5.4.35 を使用する

更新 1: access_token セクションを削除すると、「Bad Authentication data」メッセージが返されます。再度有効にすると、1358 行目の somepath/vendor/zendframework/zendframework/library/Zend/Http/Client.php の非オブジェクトでメンバー関数 connect() を呼び出すという atal エラーが発生します。

4

1 に答える 1

1

Twitterは、Twitter API エンドポイントでSSL 接続のみを許可します。この詳細は、ここに文書化されています。そのため、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'
    ) 
),

リモート ホストを確認するときは、信頼できる CA の証明書を 1 つ以上提供する必要があります。オプションの値 2VERIFYHOSTは、共通名の存在を確認し、提供されたホスト名と一致することを確認するために必要です。SSL ピア証明書内の名前の存在のみを確認するには、1 を使用します。

Curl アダプターを使用して SSL 接続を構成する方法については、このすばらしいチュートリアルを参照してください。

于 2014-11-21T09:17:46.627 に答える