gpt4 book ai didi

api - 在共享服务器上使用 Twitter API - 即使我正在缓存响应,也超出了速率限制

转载 作者:行者123 更新时间:2023-12-01 11:52:18 27 4
gpt4 key购买 nike

我编写了一个 php 脚本,它通过为每个帐户提取一个 xml 并将其缓存在我的服务器上来获取 12 个不同 Twitter 帐户的最新状态更新。目前每 30 分钟运行一次。

不幸的是,我不断收到“超出速率限制。客户每小时发出的请求不能超过 150 个”的提示。错误事件,尽管我只从我应该拥有的 150 个请求中发出了 24 个请求。

我认为这是因为我的域在共享服务器上,而 Twitter 正在计算针对我的其他请求。

如何授权我的请求,使我不受标准 IP 限制的限制?

我没有使用 OAuth 的经验,所以如果可能的话需要一步一步的指导。

提前致谢!

最佳答案

好吧,我设法在没有 API 等方面经验的情况下充分利用了这项工作。

这是我的分步指南:

第 1 步。创建 Twitter 列表。

  1. 转到:https://twitter.com/username/lists
  2. 点击“创建列表”
  3. 输入详细信息并保存。
  4. 转到您希望添加到列表中的 Twitter 用户,然后单击齿轮下拉菜单并选择“添加或从列表中删除”。勾选列表旁边的复选框。

第 2 步。通过以下方式创建 Twitter 应用程序:https://dev.twitter.com/apps/new

  1. 使用您的 Twitter 凭据登录。
  2. 为您的应用命名、描述等。
  3. 转到“设置”选项卡并将访问类型更改为“读取”和“写入”,然后单击“更新此 Twitter 应用程序的设置”。
  4. 点击页面底部的“创建我的访问 token ”。

您现在将拥有消费者 key 、消费者 secret 、访问 token 和访问 token secret 。记下这些。

第 3 步。 创建 API token 。

  1. 从以下位置下载 Abraham Twitter oAuth 库并将其安装到您的服务器:https://github.com/abraham/twitteroauth (我将使用名为“twitter”的文件夹。

  2. 创建一个新文件,在 oAuth 文件夹中将其命名为 authorise.php 并将以下代码放入其中(使用您生成的 key 代替命名文本)。 (将代码放在 < ? PHP 和 ?> 括号之间)。

    // Create our twitter API object
    require_once("twitteroauth/twitteroauth.php");
    $oauth = new TwitterOAuth('Put-Consumer-Key-here', 'Put-Consumer-secret-here',
    'Put-Access-Token-here', 'Put-Access-token-secret-here');
    // Send an API request to verify credentials
    $credentials = $oauth->get("account/verify_credentials");
    echo "Connected as @" . $credentials->screen_name;
    // Post our new "hello world" status
    $oauth->post('statuses/update', array('status' => "hello world"));
  3. 这现已授权您的 Twitter 应用使用 API,并在您的 Twitter 帐户上发布“hello world”状态。

注意:我们之前所做的读/写访问更改允许代码发布状态更新,实际上不需要从 API 中提取列表,但我这样做是为了确保它正常工作。 (您可以返回“设置”再次关闭此功能)。

第 4 步。创建 PHP 文件以提取列表并缓存文件。

  1. 创建一个 XML 文件 (YOUR-FILE-NAME.xml) 并将其保存在 oAuth 文件夹中。
  2. 创建一个 PHP 文件 (YOUR-PHP-FILE.php) 并将其保存在 oAuth 文件夹中
  3. 使用您的 Twitter API key 、文件名和 Twitter 列表详细信息编辑以下代码,并将其保存在您的 PHP 文件中。 (将代码放在 < ? PHP 和 ?> 括号内)。

    /* Twitter keys & secrets here */
    $consumer_key = 'INSERT HERE';
    $consumer_secret = 'INSERT HERE';
    $access_token = 'INSERT HERE';
    $access_token_secret = 'INSERT HERE';

    // Create Twitter API object
    require_once('twitteroauth/twitteroauth.php');
    // get access token and secret from Twitter
    $oauth = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
    // fake a user agent to have higher rate limit
    $oauth->useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9';

    // Send an API request to verify credentials
    $credentials = $oauth->get('account/verify_credentials');
    echo 'Connected as @' . $credentials->screen_name . '\n';

    // Show API hits remaining
    $remaining = $oauth->get('account/rate_limit_status');
    echo "Current API hits remaining: {$remaining->remaining_hits}.\n";

    $ch = curl_init();
    $file = fopen("YOUR-FILE-NAME.xml", "w+");
    curl_setopt($ch, CURLOPT_URL,'https://api.twitter.com/1/lists/statuses.xml?slug=INSERT-LIST-NAME&owner_screen_name=INSERT-YOUR-TWITTER-USERNAME-HERE&include_entities=true');
    curl_setopt($ch, CURLOPT_FILE, $file);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
    fclose($file);?>
  4. 将文件路径复制到浏览器中并进行测试。 (例如 http://www.yourwebsite.com/twitter/YOUR-PHP-FILE.php)

这应该联系 twitter,将列表作为 XMl 文件提取并将其保存到 YOUR-FILE-NAME.xml 中。通过打开 XML 文件对其进行测试,它应该具有来自您的 Twitter 列表中的用户的最新状态。

第 5 步。通过 Cron 作业自动运行 PHP 脚本以按您喜欢的频率运行(每小时最多 350 次)。

  1. 打开您的 Cpanel 并点击“Cron 作业”(通常在“高级”下)。
  2. 您可以使用常用设置来选择脚本的规律性。
  3. 在命令字段中添加以下代码:

    php/home/CPANEL-USERNAME/public_html/WEBSITE/twitter/YOUR-PHP-FILE.php >/dev/null 2>&1

您的脚本现在将按照您选择的频率运行,从 Twitter 中提取列表并将其保存到 YOUR-FILE-NAME.xml 中。

第 6 步。您现在可以从缓存的 XML 文件中提取状态,这意味着您的访问者不会对 API 进行不必要的调用。

我还没有弄清楚如何定位特定的 screen_name 是否有人可以提供帮助?

关于api - 在共享服务器上使用 Twitter API - 即使我正在缓存响应,也超出了速率限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com