mpyw / twistoauth
Requires
- php: >=5.3.2
- ext-hash: *
- ext-json: *
- ext-reflection: *
- lib-curl: *
- lib-libxml: *
- lib-openssl: *
- lib-pcre: *
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密钥。现在,让我们注册您自己的应用程序。
- 点击
创建新应用
- 填写
名称
、描述
、网站
。 - 填写
回调URL
。 用户在成功认证后默认会被重定向到这里。 - 阅读规则并勾选
是,我同意
。 - 点击
创建您的Twitter应用
。
注意:localhost
不适用于回调URL。请使用 127.0.0.1
代替。
3. 修改应用权限
默认情况下,您只能读取推文,但不能发布推文。您必须配置权限设置。
- 打开您应用的详细页面。
- 点击
权限
标签。 - 选择
读取、写入和访问直接消息
。 - 点击
更新设置
。
4. 记录您的 consumer_key 和 consumer_secret
这些参数是 您应用 的标识符。
- 打开您应用的详细页面。
- 点击
API密钥
标签。 - 记录
API密钥
和API密钥秘密
。它们代表 consumer_key 和 consumer_secret。
5. 生成您的 access_token 和 access_token_secret
这些参数是您账户的标识符。
- 打开您应用的详细页面。
- 点击
API密钥
标签。 - 点击
生成我的访问令牌
。 - 注意
访问令牌
和访问令牌密钥
。
内容
常见问题解答
- 我如何了解Twitter API?
- 有没有获得令牌的不错认证工具?
- 我如何使用OAuth 2.0认证流程?
oauth_verifier
是什么?oauth_callback
是什么?- 我如何在回调闭包中使用
$to
? - 所有类都是不可变的吗?
- 为什么不用命名空间?
- 推文已经转义了...wtf!?
- 用户描述中包含未转义的
&
...wtf!? - cURL在Windows中导致
SSL证书问题
错误!
我如何了解Twitter API?
从文档中学习。
或者观看实际响应。以下工具非常有用。
有没有获得令牌的不错认证工具?
尝试以下命令行工具。
- mpyw/twhelp (交叉编译的二进制文件)
我如何使用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_QUOTES
或ENT_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);
警告
&
不会被替换成&
。
以下代码片段可能会打印出损坏的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。