使用PHP的Twitter REST API v1.1简单请求示例

时间:2013-08-21 22:17:18

标签: php twitter

如果我的应用程序有twitter消费者密钥和消费者密钥,如何在不使用任何外部库的情况下使用PHP请求this GET请求?

任何好的例子都会被新手推荐给REST REST API。

1 个答案:

答案 0 :(得分:1)

只有消费者密钥和消费者秘密,您无法成功获得GET请求。您还需要一个Oauth Token(访问令牌)和一个Oauth Token Secret(访问令牌)。

要获取访问令牌访问令牌密钥,您需要进行身份验证,或者,如果应用程序仅供个人使用,请创建访问令牌应用程序页面上的应用程序详细信息。

我将向前解释如何以艰难的方式获取令牌(其他人也可以使用您的推特应用程序)。您需要对Twitter的API进行身份验证。有关参考,请参阅twitter的官方how to sign in文章。我试图根据这篇文章提供一个更容易理解的解释。

如果你已经拥有oauth令牌和oauth令牌秘密,你可以直接跳到下面的如何发出GET请求


如何验证

*在我们再进一步之前,我想说明你需要激活cURL,才能正确发送任何请求。

第1步 - 构建标题并将其发送到Twitter以请求身份验证令牌。(它基本上授权您进行身份验证)

这些是您需要的标题:

oauth_consumer_key = YOUR_CONSUMER_SECRET

oauth_nonce = RANDOM_GENERATED_32_CHAR_STRING

oauth_timestamp = NOW()

oauth_callback = YOUR_CALLBACK

oauth_signature_method = HMAC-SHA1

oauth_version = 1.0

oauth_signature =基于所有上述标题生成的签名。 (如何构建签名本身就是一个非常大的主题,所以我会阅读this article。)

拥有所有标题后,按字母顺序对它们进行排序以键和值对连接(例如,consumer_key =" YOU_CONSUMER_KEY")和将它们附加到字符串" OAuth"。

你最终会得到类似的东西:

OAuth oauth_consumer_key =" YOUR_CONSUMER_KEY",oauth_nonce =" YOUR_NONCE",oauth_signature =" YOUR_SIGNATURE",oauth_signature_method =" HMAC-SHA1", oauth_timestamp =" 1377125526",oauth_token =" 84832050-OHhyESU4wM2YGRINsseuJQwouG1PY1Rs5YReZHZHwh",oauth_version =" 1.0"

这是您的标头值。

发送' 授权'通过发布 cUrl 到此网址:https:// + api.twitter.com/oauth/request_token(*取' +& #39; out)并将响应存储在var中。

如果一切正常,你的存储var应该填充一个包含oauth_token的字符串。 *注意这不是您访问令牌 - 它只是您将用于进行身份验证的令牌。

现在你有了oauth_token值,你可以重定向到https:// + api.twitter.com/oauth/authenticate?oauth_token=THE_RECEIVED_OAUTH_TOKEN_VALUE

此时,系统会在Twitter上提示您登录表单,您已准备好转到

第2步 - CALLBACK

在上一步中使用Twitter登录后,您被重定向到您http:// + OWN_CALLBACK_URL?/ oauth_token = SOME_VALUE& oauth_verifier = SOME_VALUE

* 再次这些不是您的最终访问权限。您只需要使用它们来创建新标题并将它们发送回twitter。

第3步 - 交换令牌

因此,将这2个令牌附加到已在步骤1中创建的标题列表中,重建基于所有标题的签名并发送另一个使用 cURL 通过 POST 创建新标头值的授权标头。

如果一切都恢复正常,这个cURL的响应应该是包含oauth_token和oauth_token_secret的另一个字符串。 *这些是您真正的访问令牌和访问令牌密钥。

一旦你拥有真正的oauth_token(我称之为access_token)和oauth_token_secret,你就可以将它们存储在数据库,SESSION或你想要的任何地方。从现在开始,您将需要为每个GET请求提供它们。



如何发出GET请求

*在我们再进一步之前,我想说明你需要激活cURL,才能正确发送任何请求。

您需要知道要向其发出请求的端点网址。 (例如,如果您想获得所有您喜欢的推文,您需要这个网址:https +:// api.twitter.com/1.1/favorites/list.json(以&#39; +&#39; out)< / p>

创建标题

您需要创建一组标题(请参阅如何验证中有关如何创建标题的步骤1)并将oauth标记附加到它们。

* 注意创建签名时,您需要使用oauth令牌机密+默认的ouath使用者机密来签署基本字符串。有关详细信息,请参阅https +://dev.twitter.com/docs/auth/creating-signature(请参阅&#39; +&#39; out)了解如何构建签名。

* 注意2 在构建签名时,您还需要拥有所有额外的查询参数(无论是在端点URL中的list.json之后)。


通过 GET http方法将发送请求发送到端点网址,其中包含&#39;授权&#34;刚使用 cURL 创建的标头,并将结果存储在本地变种

var_dump var并查看它包含的好东西。