sraka1 / oauth1
OAuth 1.0/1.0a 协议的轻量级 PHP 包装器。
This package is not auto-updated.
Last update: 2024-09-23 14:44:10 UTC
README
PHP 客户端库,用于与 OAuth1 端点交互。由 abraham/twitteroauth 衍生。
流程概述
- 使用客户端凭据构建 BasicOAuth 对象。
- 从端点请求临时凭据。
- 构建授权/认证 URL。
- 将用户重定向到授权/认证 URL。
- 用户授权访问并从端点返回。
- 使用客户端凭据和临时凭据重新构建 BasicOAuth 对象。
- 从端点获取令牌凭据。
- 使用客户端凭据和令牌凭据重新构建 BasicOAuth 对象。
- 查询端点 API。
- 盈利!
参数
在创建 BasicOAuth 对象后,您可以修改多个参数。其中一些是必需的
必需
$connection->accessTokenURL
$connection->authenticateURL
$connection->authorizeURL
$connection->requestTokenURL
可选:如果您想使用此类进行 API 请求(而不仅仅是认证),请将其用作 API 端点。应包含尾随斜杠。
$connection->host = "https://api.twitter.com/1.1/";
自定义用户代理。
$connection->useragent = 'Custom useragent string';
验证端点 SSL 证书。
$connection->ssl_verifypeer = TRUE;
在 BasicOAuth.php 中还可以找到更多参数。
使用示例代码的扩展流程
要使用 BasicOAuth 与 OAuth 端点,您需要 BasicOAuth.php、OAuth.php 和客户端凭据。您可以通过在将要连接的提供程序处注册您的应用程序来获取客户端凭据。获取文件的最简单方法是使用 Composer。
-
首先,构建基本对象。使用 \OAuth1\BasicOauth;
$connection = new BasicOAuth('abc890', '123xyz');
-
使用构建的 $connection 对象,您将要求端点提供临时凭据。需要
oauth_callback值。$tempCredentials = $connection->getRequestToken('http://asdf.com/oauthcallback');
-
现在我们已经有了临时凭据,用户必须前往端点并授权应用程序访问和更新其数据。您还可以传递第二个参数 FALSE,以便不使用请求登录(重新认证,但并非所有 OAuth1 端点都支持此功能)。
$redirect_url = $connection->getAuthorizeURL($tempCredentials); // 必须登录 $redirect_url = $connection->getAuthorizeURL($tempCredentials, FALSE); // 不必登录
-
现在您将拥有一个必须将用户发送到的端点 URL。
$authUrl = https://api.twitter.com/oauth/authenticate?oauth_token=xyz123,例如:header('Location: ' . $authUrl);
-
用户现在位于端点站点的服务器上,可能需要登录。一旦通过服务器验证,他们可能必须点击允许/拒绝,或者将被自动重定向回回调。
-
现在,当用户返回到 callback.php 并允许访问时,我们需要使用临时凭据构建一个新的 BasicOAuth 对象。
$connection = new BasicOAuth('abc890', '123xyz', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
-
现在我们要求端点提供长期令牌凭据。这些凭据特定于应用程序和用户,并将像密码一样用于未来的请求。通常,令牌凭据会保存到您的数据库中,但在此示例中,我们只是使用会话。
$tokenCredentials = $connection->getAccessToken($_REQUEST['oauth_verifier']); // 保存到数据库
-
有了令牌凭据,我们可以构建一个新的 BasicOAuth 对象。
$connection = new BasicOAuth(CONSUMER_KEY, CONSUMER_SECRET, $tokenCredentials['oauth_token'], $tokenCredentials['oauth_token_secret']);
-
最后,我们可以以用户身份进行认证请求。您可以执行 GET、POST 和 DELETE API 方法。直接从 API 文档中复制路径。这包括 $connection->host 和提供的 url。
$account = $connection->get('account/verify_credentials'); $status = $connection->post('statuses/update', array('status' => '这里的状态文本', 'in_reply_to_status_id' => 123456)); $status = $connection->delete('statuses/destroy/12345');
-
盈利!
测试
该库目前已确认可与 Twitter、BitBucket 和 Dropbox 一起工作。单元测试正在进行中。