mcloide / twitteroauth
Twitter oAuth API的包装类
Requires
- php: >=5.3.2
This package is not auto-updated.
Last update: 2022-02-01 12:37:09 UTC
README
更新
原始库已更新,允许修改API端点。这可以让其他具有类似端点和结构如Twitter API的API受益于库。一个例子是500px.com API。
库被修改,允许更新或设置以下值:host
,acccessTokenUrl
,authenticateURL
,authorizeURL
和requestTokenURL
。默认值是Twitter原始API端点和主机。
以下函数现已弃用
accessTokenURL()
authenticateURL()
authorizeURL()
requestTokenURL()
并已被替换为
* @param string $type Default's to access. Values: <access_token>, <authenticate>, <authorize> and <request_token>
getUrl($type = 'access_token')
添加了新函数,现在可以从应用程序端设置host
,acccessTokenUrl
,authenticateURL
,authorizeURL
和requestTokenURL
* @param string $param Accepted values: <host>, <accessTokenUrl>, <authenticateUrl>, <authorizeUrl>, <requestTokenUrl>
* @param string $value (optional) If empty will set the param with null
setParam($param, $value = null)
如果您对oAuth流程和逻辑不熟悉,请务必使用此存储库中可用的测试文件。
流程概述
- 使用客户端凭据构建TwitterOAuth对象。
- 从Twitter请求临时凭据。
- 构建Twitter的授权URL。
- 将用户重定向到授权URL。
- 用户授权访问并从Twitter返回。
- 使用客户端凭据和临时凭据重建TwitterOAuth对象。
- 从Twitter获取令牌凭据。
- 使用客户端凭据和令牌凭据重建TwitterOAuth对象。
- 查询Twitter API。
术语
自0.1.x以来,术语已更改,以更好地匹配draft-hammer-oauth IETF RFC。您可以在http://tools.ietf.org/html/draft-hammer-oauth上阅读它。一些术语将与Twitter使用的术语不同。
客户端凭据 - 当在Twitter上注册应用程序时获得的消费者密钥/密钥。临时凭据 - 以前称为请求令牌。令牌凭据 - 以前称为访问令牌。
参数
在创建TwitterOAuth对象后,您可以修改一些参数。
TwitterOAuth的最新版本支持Twitter API v1.1,但如果您想从v1.0更新旧安装,可以执行以下操作。
$connection->host = "https://api.twitter.com/1.1/";
自定义用户代理。
$connection->useragent = 'Custom useragent string';
验证Twitter的SSL证书。
$connection->ssl_verifypeer = TRUE;
您可以在TwitterOAuth.php中找到更多。
使用示例代码扩展流程
要使用TwitterOAuth与Twitter API一起使用,您需要TwitterOAuth.php,OAuth.php和客户端凭据。您可以通过在dev.twitter.com/apps上注册您的应用程序来获取客户端凭据。
用户从connect.php开始,该文件显示“使用Twitter登录”的图像,该图像链接到redirect.php。此按钮应显示在您的主页上的登录部分。客户端凭据存储在config.php中,作为CONSUMER_KEY
和CONSUMER_SECRET
。您可以在应用程序设置页面、配置文件中保存静态回调URL,或稍后在步骤2中使用动态回调URL。在示例中使用https://example.com/callback.php。
-
当用户访问redirect.php时,我们使用客户端凭证创建一个新的TwitterOAuth对象。如果您有自己的配置方法,请随时使用它代替config.php。
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); // 使用config.php客户端凭证 $connection = new TwitterOAuth('abc890', '123xyz');
-
使用构建的$connection对象,您将向Twitter请求临时凭证。需要提供
oauth_callback
值。$temporary_credentials = $connection->getRequestToken(OAUTH_CALLBACK); // 使用config.php回调URL。
-
现在我们有了临时凭证,用户需要访问Twitter并授权应用访问和更新其数据。您也可以传递第二个参数FALSE,以不使用通过Twitter登录。
$redirect_url = $connection->getAuthorizeURL($temporary_credentials); // 使用Sign in with Twitter $redirect_url = $connection->getAuthorizeURL($temporary_credentials, FALSE);
-
现在您将拥有一个必须发送给用户的Twitter URL。
https://api.twitter.com/oauth/authenticate?oauth_token=xyz123
-
用户现在在twitter.com,可能需要登录。一旦通过Twitter认证,他们可能需要点击允许/拒绝,或者将被自动重定向回回调。
-
现在用户已经返回到callback.php并允许访问,我们需要使用临时凭证创建一个新的TwitterOAuth对象。
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
-
现在我们向Twitter请求长期有效的令牌凭证。这些凭证针对特定的应用程序和用户,将像密码一样用于未来的请求。通常,令牌凭证会被保存在您的数据库中,但在这个示例中我们只是使用会话。
$token_credentials = $connection->getAccessToken($_REQUEST['oauth_verifier']);
-
有了令牌凭证,我们构建一个新的TwitterOAuth对象。
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $token_credentials['oauth_token'], $token_credentials['oauth_token_secret']);
-
最后,我们可以作为用户进行认证请求。您可以使用GET、POST和DELETE API方法。直接从API文档复制路径,并添加任何您希望包含在API方法中的参数数组,例如curser或in_reply_to_status_id。
$account = $connection->get('account/verify_credentials'); $status = $connection->post('statuses/update', array('status' => 'Text of status here', 'in_reply_to_status_id' => 123456)); $status = $connection->delete('statuses/destroy/12345');
贡献者
- Abraham Williams - 主要开发者,当前维护者。