Php 错误:"__construct()必须是一个数组,未给定任何值;
通过控制器中的以下代码,我能够将OAuth访问令牌传递到TwitterAPI 1.1版并执行查询:Php 错误:"__construct()必须是一个数组,未给定任何值;,php,codeigniter,oauth,twitter,Php,Codeigniter,Oauth,Twitter,通过控制器中的以下代码,我能够将OAuth访问令牌传递到TwitterAPI 1.1版并执行查询: // Set access tokens here $settings = array( 'oauth_access_token' => "My Oauth Access Token", 'oauth_access_token_secret' => "My Oauth Access Token Secret", 'consumer_key' => "My
// Set access tokens here
$settings = array(
'oauth_access_token' => "My Oauth Access Token",
'oauth_access_token_secret' => "My Oauth Access Token Secret",
'consumer_key' => "My Consumer Key",
'consumer_secret' => "My Consumer Secret"
);
$url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?username=somename';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
然而,出于安全原因,我读到消费者机密在应用程序中不应该是人类可读的。因此,我将OAuth访问令牌从控制器(见上文)移到以下位置(见下文):
application\config\twitter\u settings.php
现在我遇到以下错误,我不确定如何将OAuth访问令牌传递给:
遇到一个PHP错误
严重程度:4096
消息:参数1传递给TwitterAPIExchange::\uu构造()必须
是一个数组,未给定,已调用
C:\wamp\www\twitter\u app\theworks\core\Loader.php,第1099行和
明确的
文件名:twitter/TwitterAPIExchange.php
电话号码:33
确保您传入了正确的参数
这是我的控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Search extends CI_Controller {
public function index()
{
$this->config->load('twitter_settings');
//$this->load->library('encrypt');
$this->load->library('/twitter/TwitterAPIExchange');
$url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?username=stackexchange';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange(/* I need to pass the OAuth tokens here */);
echo $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
}
}
/* End of file search.php */
/* Location: ./application/controllers/search.php */
以下是错误:
遇到一个PHP错误
严重程度:4096
消息:参数1传递给TwitterAPIExchange::\uu构造()必须
是一个数组,未给定,已调用
C:\wamp\www\twitter\u app\theworks\core\Loader.php,第1099行和
明确的
文件名:twitter/TwitterAPIExchange.php
电话号码:33
确保您传入了正确的参数
因此,当我查看twitter/TwitterAPIExchange.php的第33行时,我发现:
/**
* Create the API access object. Requires an array of settings::
* oauth access token, oauth access token secret, consumer key, consumer secret
* These are all available by creating your own application on dev.twitter.com
* Requires the cURL library
*
* @param array $settings
*/
public function __construct(array $settings)
{ //...
只需使用配置项重做
$settings
$this->config->load('twitter_settings');
$this->load->library('/twitter/TwitterAPIExchange');
$settings = array(
'oauth_access_token' => $this->config->('oauth_access_token'),
'oauth_access_token_secret' => $this->config->('oauth_access_token_secret'),
'consumer_key' => $this->config->('consumer_key'),
'consumer_secret' => $this->config->('consumer_secret')
);
$twitter = new TwitterAPIExchange($settings);
更改库加载线。删除此项:
$this->load->library('/twitter/TwitterAPIExchange');
并添加如下库:
require_once APPPATH.'libraries/twitter/TwitterAPIExchange.php';
class Twitter extends CI_Controller{
...
}
这解决了我的问题。我已经在php codeigniter中使用了它。+1感谢您的回复Stormdrain。我重写了它,得到了相同的错误“…\u construct()必须是一个数组,没有给定…”(参见上面的编辑1)奇怪。请尝试打印
$settings
数组,以确保已设置。在$twitter=newtwitter…
添加打印($settings)之前;死亡
并查看您得到了什么。另外,您是否在config.php中设置了加密密钥?没有它,加密库就不能工作。现在它工作了吗?您是否能够打印$settings
数组?它们看起来是否正确?这就是错误所在。看见您将收到该错误消息,因此其中一项未设置。
/**
* Create the API access object. Requires an array of settings::
* oauth access token, oauth access token secret, consumer key, consumer secret
* These are all available by creating your own application on dev.twitter.com
* Requires the cURL library
*
* @param array $settings
*/
public function __construct(array $settings)
{ //...
$this->config->load('twitter_settings');
$this->load->library('/twitter/TwitterAPIExchange');
$settings = array(
'oauth_access_token' => $this->config->('oauth_access_token'),
'oauth_access_token_secret' => $this->config->('oauth_access_token_secret'),
'consumer_key' => $this->config->('consumer_key'),
'consumer_secret' => $this->config->('consumer_secret')
);
$twitter = new TwitterAPIExchange($settings);
$this->load->library('/twitter/TwitterAPIExchange');
require_once APPPATH.'libraries/twitter/TwitterAPIExchange.php';
class Twitter extends CI_Controller{
...
}