Twitter 推特上说;“无法验证您的身份”;当参数中有空格时

Twitter 推特上说;“无法验证您的身份”;当参数中有空格时,twitter,encoding,parameters,oauth,space,Twitter,Encoding,Parameters,Oauth,Space,如果$searchterm=“Chinmay”,下面的代码可以很好地工作,但如果$searchterm中有空格,则无法正常工作。我尝试了很多编码,但都没有成功 第1节-获取URL和参数 $searchterm = "Chinmay+Patel"; $params = array( "q" => $searchterm ); $url = 'https://api.twitter.com/1.1/users/search.json'; 第2节-建立签名 $o

如果$searchterm=“Chinmay”,下面的代码可以很好地工作,但如果$searchterm中有空格,则无法正常工作。我尝试了很多编码,但都没有成功

第1节-获取URL和参数

    $searchterm = "Chinmay+Patel";
    $params = array( "q" => $searchterm );
    $url = 'https://api.twitter.com/1.1/users/search.json';
第2节-建立签名

    $oauth = array(
        'oauth_consumer_key'        => \Config::get("oauth-4-laravel::consumers.Twitter.client_id"),
        'oauth_nonce'               => hash('SHA1', time()),
        'oauth_signature'           => '',
        'oauth_signature_method'    => 'HMAC-SHA1',
        'oauth_timestamp'           => time(),
        'oauth_token'               => $this->twitter_user->access_token,
        'oauth_version'             => '1.0'
    );

    foreach ($oauth as $key => $value)
    {
        if (empty($value)) continue;
        $oauth_vals[] = "{$key}={$value}";
    }

    if( !empty( $params ) ){
        foreach ($params as $key => $value) {
            if(empty($value)) continue;
            $oauth_vals[] = "{$key}={$value}";
        }
    }
    $base = 'GET&' . rawurlencode($url) . '&' . rawurlencode(implode('&', $oauth_vals) );// . '&'. implode( '&', $params);
    $composite_key      = rawurlencode(\Config::get("oauth-4-laravel::consumers.Twitter.client_secret")) . '&' . rawurlencode($this->twitter_user->secret);
    $oauth_signature    = base64_encode(hash_hmac('sha1', $base, $composite_key, true));
    $oauth['oauth_signature'] = rawurlencode($oauth_signature);
第3节-构建请求头

    foreach ($oauth as $key => $value)
    {
        $auth_header[] = "{$key}=\"{$value}\"";
    }
    $auth_header = implode(', ', $auth_header);
第4节-构建url并发出请求

    if( !empty( $params ) ){
        $url .= "?" . http_build_query( $params );
    }

    $verbose = fopen('php://temp', 'rw+');
    $options = array(
        CURLOPT_HTTPHEADER      => array("Authorization: OAuth {$auth_header}"),
        CURLOPT_HEADER          => false,
        CURLOPT_URL             => $url,
        CURLOPT_RETURNTRANSFER  => true,
        CURLOPT_SSL_VERIFYPEER  => false,
        CURLOPT_HTTPGET         => true,

        // DEBUGGING
        CURLOPT_VERBOSE         => TRUE,
        CURLOPT_STDERR          => $verbose
    );

    $feed = curl_init();
    curl_setopt_array($feed, $options);
    $json = curl_exec($feed);
    curl_close($feed);
    $twitter_data = json_decode($json, true);
    rewind($verbose);
第5节-输出数据

    $verboseLog = stream_get_contents($verbose);
    echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";

    var_dump( $twitter_data );
$verboseLog=stream\u get\u内容($verbose);
回显“详细信息:\n”,htmlspecialchars($verboseLog),“\n”;
var_dump($twitter_数据);
可能是什么问题?有点超出了问题的范围,但是这段代码也不能处理多个参数。例如,如果我添加count参数,它会给出相同的错误