【问题标题】:Twitter OAuth - Invalid/Expired TokenTwitter OAuth - 无效/过期令牌
【发布时间】:2015-03-10 23:54:17
【问题描述】:

twitter_login

        $twitteroauth = new TwitterOAuth($this->__twitterKey, $this->__twitterSecret);

        $request_token = $twitteroauth->getRequestToken(Router::url(array('action' => 'twitter', 'authorize'), true));
        $this->Session->write('Twitter', $request_token);

        if($twitteroauth->http_code==200){
            // Let's generate the URL and redirect
            $url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']);
            header('Location: '. $url);
        } else {
            $this->Session->setFlash('Something went wrong');
        }

twitter_callback

    $data['oauth_verifier'] = $_GET['oauth_verifier'];
    $data['oauth_token'] = $this->Session->read('Twitter.oauth_token');
    $data['oauth_token_secret'] = $this->Session->read('Twitter.oauth_token_secret');

    $twitteroauth = new TwitterOAuth($this->__twitterKey, $this->__twitterSecret, $data['oauth_token'], $data['oauth_token_secret']);

    $access_token = $twitteroauth->getAccessToken($data['oauth_verifier']);

当我做一个 var_dump 时

我得到以下信息

Array
(
    [ "1.0" encoding="UTF-8"?>

  /oauth/access_token?oauth_consumer_key=Z2R8QqJYCthif67Qba4vzA
    [amp;oauth_nonce] => 78576d8eaaabb422fdbd3097e385adcc
    [amp;oauth_signature] => T23hCeJ5PM2rdYvdZ0mvoHzOfLk=
    [amp;oauth_signature_method] => HMAC-SHA1
    [amp;oauth_timestamp] => 1301392825
    [amp;oauth_token] => JKlpOBGaENFzuXbs4bSzVZCTWnelKX5WeJ1EA1MLfB0
    [amp;oauth_verifier] => ifPBR18Pw2iTs74GAqyFlLXbvQAoOgG3AjWpPxXV2E
    [amp;oauth_version] => 1.0
  Invalid / expired Token


)

【问题讨论】:

    标签: oauth twitter twitter-oauth


    【解决方案1】:

    在 $twitteroauth = new TwitterOAuth(...) 之前尝试 ksorting 大多数时候,OAuth 问题的出现是因为协议的要求。

    $data['oauth_token_secret'] = $this->Session->read('Twitter.oauth_token_secret');
    
    ksort($data);
    
    $twitteroauth = new TwitterOAuth($this->__twitterKey, $this->__twitterSecret,
    

    这是一个解释参数标准化(排序)的链接 http://oauth.net/core/1.0/#anchor14

    【讨论】:

      【解决方案2】:

      尝试将 OAuth oauth_timestamp 增加几个小时。

      在 PHP OAuth 客户端中是这样的:

      private static function generate_timestamp() {
          return time()+5*3600;
      }
      

      资源

      http://www.backwardcompatible.net/149-Twitter-Timestamp-out-of-bounds-solved

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-23
        • 1970-01-01
        • 2015-08-29
        • 1970-01-01
        • 2013-01-08
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        相关资源
        最近更新 更多