1. 什么是 Twitter OAuth?
在深入 Twitter OAuth 应用程序之前,我们首先需要了解 OAuth 是什么。
OAuth 是一种为 Web 分布式授权设计的开放标准。 许多网站需要用户使用用户名和密码进行身份验证,以获得对以前保护的资源的访问权限。 但是,许多用户希望在不向服务提供者提供其凭据的情况下授予第三方应用程序访问其受保护的资源的权限。 这就是 OAuth 民意调查涉及的方面。
Twitter OAuth 是 Twitter 的身份验证 API。 它允许第三方应用程序获得与用户账户相关联的令牌。 通过这种方式,它可以访问这些账户的信息,例如:链接、推文、关注者、关注的人以及位置信息等。
2. 创建 Twitter 应用程序
2.1 创建 Twitter 开发人员帐户
在开始创建 Twitter 应用程序之前,您需要注册 Twitter 开发人员帐户。只需访问 Twitter Developer 网站,然后单击 "应用程序管理" 以注册您的帐户。
2.2 创建 Twitter 应用程序
登录之后,您进入了 Twitter 开发人员控制台。 从那里,您可以创建一个新的应用程序。 要创建该应用程序,请单击控制台的 "创建应用程序" 按钮。
以下是需要提供的信息:
您的应用程序名称,最多不能超过 30 个字符
应用程序描述,最多不能超过 100 个字符
应用程序网站 URL(此步骤是可选的,但强烈建议提供)
应用程序回调网址
应用程序回调网址是授权验证成功后将用户重定向到的网址。 该网址必须与您的应用程序存储在 Twitter API 中的回调网址完全匹配。
2.3 创建应用程序凭据
完成应用程序创建后,您将看到一个页面,该页面包含您的消费密钥和消费密钥秘密。 这些是您应用程序的凭据。
3. 连接 Twitter API
您现在已经拥有 Twitter OAuth 应用程序所需的基本凭据。 现在,您需要设置库来连接到 Twitter API。我们将使用 TwitterOAuth 库来帮助我们完成这一点。安装方式如下:
composer init
composer require abraham/twitteroauth
4. 进行 OAuth 身份验证
第一步是为用户请求一个 OAuth 请求令牌。 要请求 OAuth 令牌,请为您的应用程序设置 TwitterOAuth 库,如下所示:
require __DIR__ . '/vendor/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
$apiKey = "['your API key']";
$apiSecretKey = "['your API secret key']";
$accessToken = "";
$accessTokenSecret = "";
$twObj = new TwitterOAuth($apiKey, $apiSecretKey, $accessToken, $accessTokenSecret);
$request_token = $twObj->oauth('oauth/request_token', ['oauth_callback' => ['your callback url']]);
echo '<a href="'.$twObj->url('oauth/authorize', ['oauth_token' => $request_token['oauth_token']]).'">Authorize</a>';
代码分析:
在这里,我们首先设置了 TwitterOAuth 库并提供了我们的 API 密钥和秘密。 我们还设置了 $accessToken 和 $accessTokenSecret 变量,但是因为我们需要向 Twitter 验证身份,所以这些变量留为空。
接下来,我们执行 $twObj->oauth(),传递 'oauth/request_token',以请求 OAuth 请求令牌。 我们还提供了一个 'oauth_callback' 参数,以便 Twitter 将用户重定向到您的应用程序的方法。
在请求令牌后,我们将用户重定向到 Twitter 的身份验证网址。 该网址包含一个 'oauth_token' 参数,其中包含我们请求的 OAuth 令牌。
4.1 获取访问令牌
用户成功授权后,就会重定向到您在应用程序注册页面上提供的 'oauth_callback' URL。 该 URL 包含两个参数:'oauth_token' 和 'oauth_verifier'。要完成身份验证(并获取访问令牌),我们可以使用以下代码:
$request_token = [];
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];
if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
echo 'Error in Oauth';
exit;
}
$access_token = $twObj->oauth("oauth/access_token", ["oauth_verifier" => $_REQUEST['oauth_verifier']]);
代码分析:
我们首先为 OAuth 令牌设置并构建一个请求数组 $request_token,然后将其存储在会话中。
接下来,我们检查回调方法返回的 'oauth_token' 是否匹配我们的请求令牌。 如果没有匹配项,则返回“Oauth 错误”。
最后,我们使用 'oauth/access_token' 终结点和 'oauth_verifier' 参数调用 $twObj->oauth(),以获取 OAuth 访问令牌。 该方法将返回一个包含访问令牌的数组。
5. 执行 API 请求
现在,我们已经通过 OAuth 身份验证,可以将 TwitterOAuth 库用于在 Twitter API 中发出请求。 下面是一个示例,在这个示例中,我们获取了当前验证用户的一些基本信息:
$access_token = ['oauth_token' => 'YOUR ACCESS TOKEN', 'oauth_token_secret' => 'YOUR ACCESS TOKEN SECRET'];
$connection = new TwitterOAuth($apiKey, $apiSecretKey, $access_token['oauth_token'], $access_token['oauth_token_secret']);
$user = $connection->get("account/verify_credentials");
echo $user->name;
echo '<br/>';
echo $user->screen_name;
echo '<br/>';
echo $user->location;
echo '<br/>';
代码分析:
在这里,我们使用我们的 API 密钥和访问令牌实例化一个新的 TwitterOAuth 对象。
我们使用 'account/verify_credentials' 端点执行 get(),这将允许我们访问当前验证用户的基本信息。
最终,我们将这些基本信息打印到屏幕上。
6. 总结
现在,您已经学习到了如何创建和配置 Twitter OAuth 应用程序,以及如何使用 TwitterOAuth 库来将您的应用程序与 Twitter API 集成。
总结一下,下面是完成此任务所必需的几个步骤:
创建 Twitter 开发人员帐户和应用程序
配置 TwitterOAuth 库并请求 OAuth 令牌
将用户重定向到 Twitter 并请求访问令牌
使用访问令牌执行 API 请求
希望本文对您构建 Twitter OAuth 应用程序有所帮助。 祝您好运!