如果我有我的应用程序的twitter使用者密钥和使用者秘密密钥,我如何在不使用任何外部库的情况下请求这 GET请求?
任何好的例子都会受到twitter REST新手的赞赏。
发布于 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,该变量并查看它包含的好东西。
https://stackoverflow.com/questions/18368639
复制相似问题