Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Twitter-获取请求令牌:代码:32_Php_Twitter_Twitter Oauth - Fatal编程技术网

Php Twitter-获取请求令牌:代码:32

Php Twitter-获取请求令牌:代码:32,php,twitter,twitter-oauth,Php,Twitter,Twitter Oauth,我编写了一个函数从twitterapi获取请求令牌。我得到下面的错误 {“错误”:[{“代码”:32,“消息”:“无法验证您的身份。”}]} 我的代码是这样的 function beuTwitterOauthToken() { $url = "https://api.twitter.com/oauth/request_token"; $method = "POST"; $oauth_callback = $this->beuTwitterApiCallBa

我编写了一个函数从twitterapi获取请求令牌。我得到下面的错误

{“错误”:[{“代码”:32,“消息”:“无法验证您的身份。”}]}

我的代码是这样的

function beuTwitterOauthToken()
{   

    $url = "https://api.twitter.com/oauth/request_token";
    $method = "POST";

    $oauth_callback = $this->beuTwitterApiCallBack;
    $oauth_consumer_key = $this->beuTwitterConsumerKey;
    $oauth_consumer_key_secret = $this->beuTwitterConsumerKeySecret;
    $oauth_nonce = $this->beuTwitterNonce();
    $oauth_signature_method = "HMAC-SHA1";
    $oauth_timestamp = time();
    $oauth_version = "1.0";

    $params = array(
        'oauth_callback'            =>  rawurlencode($oauth_callback),
        'oauth_consumer_key'        =>  rawurlencode($oauth_consumer_key),
        'oauth_nonce'               =>  rawurlencode($oauth_nonce),
        'oauth_signature_method'    => rawurlencode($oauth_signature_method),
        'oauth_timestamp'           =>  rawurlencode($oauth_timestamp),
        'oauth_version'             =>  rawurlencode($oauth_version)
    );

    ksort($params);

    $parameter_string = http_build_query($params);

    $base_string = $method . '&';
    $base_string .= rawurlencode($url) . '&';
    $base_string .= $parameter_string;

    $oauth_signing_key = rawurlencode($oauth_consumer_key_secret) . '&';
    $oauth_signature = base64_encode(hash_hmac('sha1', $base_string, $oauth_signing_key, true));

    $params['oauth_signature'] = rawurlencode($oauth_signature);

    ksort($params);

        foreach($params as $key=>$value){
            $post .= $key.'='.'"'.$value.'", ';
        }

    $post = rtrim($post, ", ");

    $headers = array( 
        "POST /oauth/request_token HTTP/1.1",
        "User-Agent: Beu",
        "Host: api.twitter.com",
        "Accept: */*",          
        "Authorization: OAuth ". $post
    ); 

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $retrievedhtml = curl_exec ($ch);
    curl_close($ch);

    return $retrievedhtml;

}

我想不出代码出了什么问题。感谢您的帮助……

对我来说,配置参数有问题:

consumer_key & consumer_secret

我在twitter上有两个应用程序,一个用于生产环境,另一个用于开发。我将在生产环境中检索到的访问令牌与开发环境中为应用程序提供的使用者密钥和机密混合在一起,因此它们在twitter系统中不匹配。

对我来说,这是配置参数的问题:

consumer_key & consumer_secret
我在twitter上有两个应用程序,一个用于生产环境,另一个用于开发。我将在生产环境中检索的访问令牌与在开发环境中为应用程序提供的消费者密钥和机密混合在一起,因此它们在twitter系统中不匹配