Mryqu's Notes


  • 首页

  • 搜索
close

twitcurl获取访问令牌(AccessToken和AccessTokenSecret)的实现流程

时间: 2016-07-01   |   分类: DataBuilder     |   阅读: 84 字 ~1分钟

twitterClient.cpp中有一段代码是没有AccessToken和AccessTokenSecret的情况下,通过ConsumerKey、ConsumerKeySecret、UserName和UaserPassword获取AccessToken和AccessTokenSecret。 一般实现是通过重定向到Twitter页面去授权应用,通过callbackURL获得Twitter传过来的AccessToken和AccessTokenSecret信息。twitcurl既可以通过访问twitter.com获取PIN,也可以交由twitcurl自动获得。 如果通过twitter.com处理PIN,twitcurl会提供授权链接。进入链接后输入用户名和密码,会重定向到Twitter应用的callbackURL(例如http://www.mryqu.com/test.html?oauth_token={OAuthToken}&oauth_verifier={OAuthVerifier} ),其中oauth_verifier值即为所谓的PIN。 下面我们看一下twitcurl是如何实现不访问twitter.com获取AccessToken和AccessTokenSecret的。

  • GET https://api.twitter.com/oauth/request_tokentwitCurl::oAuthRequestToken 方法实现该HTTP请求,允许消费者应用获得一个OAuth请求令牌以请求用户授权。除了HTTP OAuth头外,twitcurl实现没有其他HTTP头,也没有消息体内容。HTTP OAuth头包含如下项:
    • oauth_consumer_key
    • oauth_nonce
    • oauth_signature
    • oauth_signature_method
    • oauth_timestamp
    • oauth_version

通过如下HTTP响应可以获得oauth_token和oauth_token_secret,保存在oAuth对象的m_oAuthTokenKey和m_oAuthTokenSecret变量中:

oauth_token=XXXXXX&oauth_token_secret=XXXXXX&oauth_callback_confirmed=true
  • GET https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXtwitterObj.oAuthHandlePIN 方法实现该HTTP请求,获取响应页面中表单的authenticity_token和oauth_token元素的值。除了HTTP OAuth头外,twitcurl实现没有其他HTTP头,也没有消息体内容。HTTP OAuth头包含如下项:
    • oauth_consumer_key
    • oauth_nonce
    • oauth_signature
    • oauth_signature_method
    • oauth_timestamp
    • oauth_token (取自上一HTTP响应)
    • oauth_version

HTTP响应片段:twitcurl获取访问令牌(AccessToken和AccessTokenSecret)的实现流程

  • POST https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXtwitterObj.oAuthHandlePIN 方法实现该HTTP请求,允许消费者应用使用OAuth请求令牌请求用户授权。HTTP OAuth头包含如下项:
    • oauth_consumer_key
    • oauth_nonce
    • oauth_signature
    • oauth_signature_method
    • oauth_timestamp
    • oauth_token (取自上一HTTP响应)
    • oauth_version

HTTP请求消息体内容为:

oauth_token=XXXXXX&authenticity_token=XXXXXX&session[username_or_email]=**XXXXX**X&session[password]=XXXXXX

HTTP响应片段:twitcurl获取访问令牌(AccessToken和AccessTokenSecret)的实现流程通过如下HTTP响应可以获得oauth_verifier,保存在oAuth对象的m_oAuthPin变量中。

  • GET https://api.twitter.com/oauth/access_tokentwitterObj.oAuthAccessToken 方法实现该HTTP请求,允许消费者应用使用OAuth请求令牌交换OAuth访问令牌。HTTP OAuth头包含如下项:
    • oauth_consumer_key
    • oauth_nonce
    • oauth_signature
    • oauth_signature_method
    • oauth_timestamp
    • oauth_token
    • oauth_verifier (取自上一HTTP响应)
    • oauth_version

HTTP响应:

oauth_token=XXXXXX&oauth_token_secret=XXXXXX&user_id=XXXXXX&screen_name=XXXXXX&x_auth_expires=0

通过HTTP响应可以获得oauth_token、oauth_token_secret和user_id,保存在oAuth对象的m_oAuthTokenKey、m_oAuthTokenSecret和m_oAuthScreenName变量中,可以将此OAuth访问令牌保存下来以备之后的使用,下次就无需再次申请访问令牌了。

参考

Twitter OAuth Overview
Twitter PIN-based authorization
Github: mryqu/twitcurl
OAuth Core 1.0
Twitter:POST oauth/request_token
Twitter:GET oauth/authorize
Twitter:POST oauth/access_token
twitcurl生成HTTP OAuth头的实现流程
twitter4j/auth/OAuthAuthorization.java

标题:twitcurl获取访问令牌(AccessToken和AccessTokenSecret)的实现流程
作者:mryqu
声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

#twitcurl# #twitter# #oauth# #requesttoken# #accesstoken#
[Spark]Spark2集群安装实践
微信语音导出和转换
  • 文章目录
  • 站点概览

Programmer & Architect

662 日志
27 分类
1472 标签
GitHub Twitter FB Page
    • 参考
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%