【问题标题】:twitter api search on cakephp 3cakephp 3 上的 twitter api 搜索
【发布时间】:2015-11-15 19:38:21
【问题描述】:

我正在使用 Cakephp 3,我想使用 Twitter Api 搜索使用 https://packagist.org/packages/j7mbo/twitter-api-php 检索推文。 这是我的代码:

class TweetsController extends AppController
{
 public function index()
{
    $settings = array(
'oauth_access_token' => 'myaccestoken',
        'oauth_access_token_secret' => 'myaccestokensecret',
        'consumer_key' => 'myconsumerkey',
        'consumer_secret' => 'myconsumerkeysecret'
);
    $url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?screen_name=J7mbo';
$requestMethod = 'GET';

$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
    $this->set('tweets', $tweets);
}
}

但它不起作用,有人可以帮忙吗?谢谢

【问题讨论】:

  • “不工作”是不够的。请访问help center 并阅读有关提出好问题的指南。

标签: php twitter twitter-oauth cakephp-3.0


【解决方案1】:

如果您使用的是 twitterAPIExchange.php,您可以像这样使用它:

<?php
ini_set('display_errors', 1);
require_once('TwitterAPIExchange.php');
$settings = array(
'oauth_access_token' => "",
'oauth_access_token_secret' => "",
'consumer_key' => "",
'consumer_secret' => ""
);
if(isset($_GET["user_id"])){
$userId=$_GET["user_id"];
$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$getfield = '?screen_name=' . $userId . "&count=20";
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$response = $twitter->setGetfield($getfield)
         ->buildOauth($url, $requestMethod)
         ->performRequest();
}
echo $response;
?>

您可以更改 GET 参数名称以满足您的需要。

在这种情况下,我使用的是 user_id,所以 URL 应该如下所示:

localhost/?user_id=jack

在您的代码中,您只是使用了错误的 $url,并确保以您想要的方式处理响应。

【讨论】:

  • 当我尝试检索推文时收到此错误:SSL 证书问题:无法获取本地颁发者证书。
  • @Jack 你的服务器有问题,在这里阅读更多:stackoverflow.com/questions/28858351/…
【解决方案2】:

我在 CakePHP3 中使用“J7mbo/twitter-api-php”库作为供应商并这样做:

1) 将此添加到您的 composer.json:

"require": { ... "j7mbo/twitter-api-php": "dev-master" },

然后运行composer update(php composer.phar更新)

2) 现在您可以在控制器中使用 TwitterAPIExchange 类

$settings = array(
  'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
  'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
  'consumer_key' => "YOUR_CONSUMER_KEY",
  'consumer_secret' => "YOUR_CONSUMER_SECRET"
);
$twitter = new TwitterAPIExchange($settings);
// Example: get J7mbo last tweets
$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$getfield = '?screen_name=J7mbo';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$response = $twitter->setGetfield($getfield)->buildOauth($url, $requestMethod)->performRequest();
$this->set('response', json_decode($response));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2014-06-30
    • 2015-08-15
    • 2019-03-13
    相关资源
    最近更新 更多