mpyw/twistoauth

该软件包已被废弃,不再维护。作者建议使用 mpyw/cowitter 软件包。

高级PHP Twitter库。

3.5.2 2016-01-24 09:01 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:55:06 UTC


README

警告: 此软件包已被废弃且不再维护。请使用 mpyw/cowitter 软件包。

高级PHP Twitter库。
版本 3.5.2

要求

  • PHP版本 5.3.2 或更高版本
  • libcurl(抱歉,所需版本未知)

功能

基本

  • 使用 GZIP压缩 连接
  • 自动解码响应
  • 自动修复奇怪响应
  • 异常处理
  • REST API 的请求
  • Streaming API 的请求
  • 使用 OAuth Echo 的请求
  • 通过 代理 的请求
  • 多部分请求

滥用

  • 异步多个请求
  • 异步多个流
  • 直接OAuth 身份验证

准备

1. 下载此库

您可以选择以下方法之一。

直接下载

点击 这里 以保存 TwistOAuth.phar 到您的当前工作目录。

Composer

修改 require 指令在 composer.json 中。

{
    "require": {
        "mpyw/twistoauth": "~3.0"
    }
}

如果选择此方法,将示例中的所有

require __DIR__ . '/TwistOAuth.phar';

替换为

require __DIR__ . '/vendor/autoload.php';

2. 注册您的应用程序

您可以在 https://apps.twitter.com 中管理您的API密钥。现在,让我们注册您自己的应用程序。

  1. 点击 创建新应用
  2. 填写 名称描述网站
  3. 填写 回调URL用户在成功认证后默认会被重定向到这里。
  4. 阅读规则并勾选 是,我同意
  5. 点击 创建您的Twitter应用

注意:localhost 不适用于回调URL。请使用 127.0.0.1 代替。

3. 修改应用权限

默认情况下,您只能读取推文,但不能发布推文。您必须配置权限设置。

  1. 打开您应用的详细页面。
  2. 点击 权限 标签。
  3. 选择 读取、写入和访问直接消息
  4. 点击 更新设置

4. 记录您的 consumer_keyconsumer_secret

这些参数是 您应用 的标识符。

  1. 打开您应用的详细页面。
  2. 点击 API密钥 标签。
  3. 记录 API密钥API密钥秘密。它们代表 consumer_keyconsumer_secret

5. 生成您的 access_tokenaccess_token_secret

这些参数是您账户的标识符。

  1. 打开您应用的详细页面。
  2. 点击 API密钥 标签。
  3. 点击 生成我的访问令牌
  4. 注意 访问令牌访问令牌密钥

内容

常见问题解答

我如何了解Twitter API?

从文档中学习。

或者观看实际响应。以下工具非常有用。

有没有获得令牌的不错认证工具?

尝试以下命令行工具。

我如何使用OAuth 2.0认证流程?

抱歉,这个库中不可用。请使用OAuth 1.0a代替。

oauth_verifier是什么?

它是调用以下方法时必需的。

  • TwistOAuth::renewWithAccessToken()
  • TwistOAuth::curlPostAccessToken()

用户重定向后可以获得它。

$oauth_verifier = filter_input(INPUT_GET, 'oauth_verifier');

oauth_callback是什么?

它不是必需的,但您可以在调用以下方法时使用它。

  • TwistOAuth::renewWithRequestToken()
  • TwistOAuth::curlPostRequestToken()

有三种值类型。

名称 示例值 认证类型
空字符串 "" PIN或URL(使用默认设置)
URL "http://example.com/callback.php" URL
带外 "oob" PIN

警告
如果您的应用程序配置为浏览器应用程序,则只能使用URL。
这意味着回调URL不为空

我如何在回调闭包中使用$to

使用use()

$to->streaming('user', function ($status) use ($to) { ... });

我如何忽略抛出的TwistException

现在您的代码是

try {
    $to->post('statuses/update', array('status' => 'test'));
} catch (TwistException $e) { } // This is very lengthy!!!

要忽略所有响应...

curl_exec($to->curlPost('statuses/update', array('status' => 'test'))); // Wow, cool

所有类都是不可变的吗?

是的。

$a = new TwistOAuth('CK', 'CS');
$b = $a->renewWithRequestToken();
var_dump($a === $b); // false

但是,您可以通过直接调用__construct()来更改属性值。

$obj = new TwistOAuth('a', 'b');
$obj->__construct('c', 'd'); // Break immutable rules

为什么不用命名空间?

这是因为与abraham/twitteroauth的先前版本兼容。
我相信前缀Twist-永远不会与任何其他库冲突。

推文已经转义了...wtf!?

状态文本中的HTML特殊字符已经被Twitter这样转义了

$status->text = htmlspecialchars($status->text, ENT_NOQUOTES, 'UTF-8');

警告
标志是ENT_NOQUOTES,而不是ENT_QUOTESENT_COMPAT
以下代码片段可能会打印出损坏的HTML。

<input type="text" name="text" value="<?=$status->text?>">

你应该这样做。 不要忘记将第四个参数设置为false

<input type="text" name="text" value="<?=htmlspecialchars(status->text, ENT_QUOTES, 'UTF-8', false)?>">

用户描述包含未转义的&... wtf!?

其他中的HTML特殊字符已经被Twitter这样净化

$user->name        = str_replace(array('<', '>'), '', $user->name);
$user->description = str_replace(array('<', '>'), '', $user->description);

警告
&不会被替换成&amp;
以下代码片段可能会打印出损坏的HTML。

name: <?=$user->name?><br>

你应该这样做。

name: <?=htmlspecialchars($user->name, ENT_QUOTES, 'UTF-8')?><br>

cURL在Windows中导致SSL证书问题错误!

在过去版本的库中,这个问题是这样解决的。

// You are saying, "Hey libcurl, do not certificate whether I'm really talking to Twitter."
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

然而,这会导致漏洞,容易受到中间人攻击的影响。即使使用https://协议,您的连接也可能被劫持这种攻击可以在以下情况下进行。

  • 一些DNS服务器的缓存被中毒。请参阅DNS欺骗
  • 您正在连接一个攻击者设置的陷阱式公共接入点。

正确的方法是将CA信息添加到您的计算机中。

1. 下载ca-bundle.crt并保存在目录中,路径不应包含多字节字符

# Good
C:\ca-bundles\ca-bundles.crt

# Bad
C:\Users\田所浩二\Documents\証明書\ca-bundles.crt

2. 在php.ini中添加以下定义。

curl.cainfo="C:\ca-bundles\ca-bundles.crt"

3. 重启Apache。