如何使用最少的代码获得user_timeline?

手滑点了滑稽手滑点了滑稽提问于
九条命得小猫咪回答于

这里有一些代码来总结这一切:

$token = 'YOUR TOKEN';
$token_secret = 'TOKEN SECRET';
$consumer_key = 'YOUR KEY';
$consumer_secret = 'KEY SECRET';

$host = 'api.twitter.com';
$method = 'GET';
$path = '/1.1/statuses/user_timeline.json'; // api call path

$query = array( // query parameters
    'screen_name' => 'twitterapi',
    'count' => '2'
);

$oauth = array(
    'oauth_consumer_key' => $consumer_key,
    'oauth_token' => $token,
    'oauth_nonce' => (string)mt_rand(), // a stronger nonce is recommended
    'oauth_timestamp' => time(),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_version' => '1.0'
);

$oauth = array_map("rawurlencode", $oauth); // must be encoded before sorting
$query = array_map("rawurlencode", $query);

$arr = array_merge($oauth, $query); // combine the values THEN sort

asort($arr); // secondary sort (value)
ksort($arr); // primary sort (key)

// http_build_query automatically encodes, but our parameters
// are already encoded, and must be by this point, so we undo
// the encoding step
$querystring = urldecode(http_build_query($arr, '', '&'));

$url = "https://$host$path";

// mash everything together for the text to hash
$base_string = $method."&".rawurlencode($url)."&".rawurlencode($querystring);

// same with the key
$key = rawurlencode($consumer_secret)."&".rawurlencode($token_secret);

// generate the hash
$signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $key, true)));

// this time we're using a normal GET query, and we're only encoding the query params
// (without the oauth params)
$url .= "?".http_build_query($query);

$oauth['oauth_signature'] = $signature; // don't want to abandon all that work!
ksort($oauth); // probably not necessary, but twitter's demo does it

// also not necessary, but twitter's demo does this too
function add_quotes($str) { return '"'.$str.'"'; }
$oauth = array_map("add_quotes", $oauth);

// this is the full value of the Authorization line
$auth = "OAuth " . urldecode(http_build_query($oauth, '', ', '));

// if you're doing post, you need to skip the GET building above
// and instead supply query parameters to CURLOPT_POSTFIELDS
$options = array( CURLOPT_HTTPHEADER => array("Authorization: $auth"),
                  //CURLOPT_POSTFIELDS => $postfields,
                  CURLOPT_HEADER => false,
                  CURLOPT_URL => $url,
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_SSL_VERIFYPEER => false);

// do our business
$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);

$twitter_data = json_decode($json);

回答过的其他问题

mysql 内网地址问题?

同地域可以直接使用内网,不同地域的话可以使用和 CDB 同地域的跳板机器,也可以使用外网地址访问并配置 CDB 的安全组规则。

只是不建议使用外网地址,不是不能用的哦。

2018有哪些值得关注的技术趋势?

虽然可能在2018还不能商用,但我还是要说,未来是量子计算机的! 量子计算机是指利用量子相干叠加原理,理论上具有超快的并行计算和模拟能力的计算机。如果将传统计算机比作自行车,量子计算机就好比飞机。使用亿亿次的“天河二号”超级计算机求解一个亿亿亿变量的方程组,所需时间为100年。而...... 展开详请

有支持jason返回的数据么?

JSON,不是 jason。

旧版支持 JSON,最新版只支持 XML。

https://cloud.tencent.com/document/product/436/6053

人工智能在生活中的应用都有哪些?

现阶段的人工智能定义还是不太清晰的(人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。【百度百科】)。根据这个定义,消费级人工智能产品分以下几大类(...... 展开详请

微软收购github后如何取得开发者信任?

微软 CEO Nadella 其实在之前谈到了微软在过去几年中如何成为 GitHub 上最活跃的组织,提交了超过 200 万次的项目 commits 和 updates ,并表示微软正在全身心地投入开源。 但是这样也并不能让开发者重拾对微软的信心 因为 从始至终,微软对开源的嫉...... 展开详请

如何将云主机 迁移到私有网络?

CVM 购买页截图: [图片] 如果希望更换,则需要先等待 CVM 接近到期,再使用 自定义镜像(系统盘为本地盘) 或 快照(系统盘为云硬盘)将数据迁移到新购买的私有网络环境下的 CVM。... 展开详请

关于作者

所属标签

扫码关注云+社区

领取腾讯云代金券