首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP的v1.1简单请求示例

使用PHP的v1.1简单请求示例
EN

Stack Overflow用户
提问于 2013-08-21 22:17:18
回答 1查看 563关注 0票数 0

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

任何好的例子都会受到twitter REST新手的赞赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-21 23:51:02

只有使用者的密钥和使用者的秘密,你不能提出一个成功的GET请求。您还需要一个Oauth令牌(访问令牌)和Oauth令牌秘密(访问令牌)。

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

我将继续解释如何以困难的方式获得令牌(其他人也可以使用您的twitter应用程序)。您需要验证Twitter的API。如需参考,请参阅twitter官方的如何签到文章。我试图在本文的基础上提供一个更容易理解的解释。

如果您已经拥有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 =基于上述所有头生成的签名。(如何构建签名本身就是一个很大的课题,所以我很乐意阅读这篇文章。)

在您有了所有的标题之后,按字母顺序对它们进行排序,将它们连接成一对键和值(例如,consumer_key=“YOU_CONSUMER_KEY”),并将它们附加到字符串"OAuth“中。

你最终会有这样的结果:

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

这是您的头值。

使用'Authorization‘cUrl通过POST发送带有此值的报头到以下网址: https:// +api.twitter.com/oauth/request_(*取出'+’out)并将响应存储在var中。

如果一切顺利,您的存储变量应该使用包含oauth_token的字符串填充。*备注--这不是您访问令牌--它只是您将用于身份验证的令牌。

既然您有了oauth_token值,就可以重定向到https:// +oauth_token

此时,提示您在twitter上输入登录表单,您可以移动到

步骤2 -回调

在上一步登录twitter之后,您被重定向到您的http:// + OWN_CALLBACK_URL?/oauth_token=SOME_VALUE&oauth_verifier=SOME_VALUE

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

步骤3 -交换令牌

因此,将这两个标记附加到步骤1中已经创建的标头列表中,基于重新构建签名--基于all header ,并使用cURL发送另一个带有通过POST创建的新标头值的头。

如果一切再次顺利,这个cURL的响应应该是另一个包含oauth_token和oauth_token_secret的字符串。*这是您真正的访问令牌和访问令牌秘密。

一旦您拥有了真正的oauth_token(我称之为access_token)和oauth_token_secret,您就可以将它们存储在DB中、会话中或任何您想要的地方。从现在开始,每个GET请求都需要它们。

如何发出GET请求

*在我们更进一步之前,我想说明,您需要激活cURL,以便能够正确地发送任何请求。

您需要知道要发出请求的端点url。(例如,如果你想得到你最喜欢的推特,你需要这个网址: https +://api.twitter.com/1.1/收藏夹/list.json(去掉‘+’out)

创建标头

您将需要创建一组标头(请参见中的步骤1--如何就如何创建标头对进行身份验证),并将oauth令牌附加到它们。

*备注当您创建签名时,您需要使用oauth令牌秘密+默认的ouath使用者秘密来对基字符串进行签名。有关更多信息,请参见https + ://dev.twitter.com/docs/auth/creating-signature (取出‘+’out)有关如何构建签名。

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

将请求通过GET http方法发送到使用cURL创建的带有“授权”头的端点 url,并将结果存储在本地变量中。

var_dump,该变量并查看它包含的好东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18368639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档