【问题标题】:twitter api tmhOAuth is not working oauth/access_tokentwitter api tmhOAuth 不起作用 oauth/access_token
【发布时间】:2012-03-08 10:43:35
【问题描述】:

我正在尝试使用 php 和 tmhOAuth 开发一个 twitter 应用程序

我正在使用此代码获取访问令牌。此代码在我的测试服务器中运行,但在生产服务器中不起作用。两台服务器的 php 配置几乎相同。

if(isset($_REQUEST['oauth_verifier'])) {
  $tmhOAuth->config['user_token']  = $_SESSION['oauth']['oauth_token'];
  $tmhOAuth->config['user_secret'] = $_SESSION['oauth']['oauth_token_secret'];

  $code = $tmhOAuth->request('POST', $tmhOAuth->url('oauth/access_token', ''), array(
    'oauth_verifier' => $_REQUEST['oauth_verifier']
  ));

  if ($code == 200) {
    $_SESSION['access_token'] = $tmhOAuth->extract_params($tmhOAuth->response['response']);
    unset($_SESSION['oauth']);
    header("Location: {$here}");
  } else {
    outputError($tmhOAuth);
  }

}

我收到来自 twitter [response] => 的空回复。

至少我应该收到一条错误消息。请问谁能告诉我怎么了?

tmhOAuth Object
(
    [params] => Array
        (
        )

    [headers] => Array
        (
            [Authorization] => OAuth oauth_consumer_key="htxmSKEwkd5jPB6z1bQI6Q", oauth_nonce="adb19fb2bc5f76060b63bcbb1b3e2b94", oauth_signature="E5Vb62A00L8Nj8uyt9MRKdFk6ck%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1329438683", oauth_token="g3ekXAg9SwoYIge2l1E6JGwIQ02QYiha8uz5TMVA", oauth_verifier="vOrM6QWwGRpTEWgE2Kk2Y87DL1mlx324r4wh2SsUo", oauth_version="1.0"
            [Content-Type] => 
            [Content-Length] => 
            [Expect] => 
        )

    [auto_fixed_time] => 
    [buffer] => 
    [config] => Array
        (
            [user_agent] => tmhOAuth 0.61+SSL - //github.com/themattharris/tmhOAuth
            [use_ssl] => 1
            [host] => api.twitter.com
            [consumer_key] => htxmSKEwkd5jPB6z1bQI6Q
            [consumer_secret] => fmNsDdu809uAARz0EslIL5Tj9m3XxLuaTVg6RSVnAQ
            [user_token] => g3ekXAg9SwoYIge2l1E6JGwIQ02QYiha8uz5TMVA
            [user_secret] => 4K8chxSWwwQ5nk1HSQrrbNW23FIGWiNLMycoqqxUV0
            [force_nonce] => 
            [nonce] => adb19fb2bc5f76060b63bcbb1b3e2b94
            [force_timestamp] => 
            [timestamp] => 1329438683
            [oauth_version] => 1.0
            [oauth_signature_method] => HMAC-SHA1
            [curl_connecttimeout] => 30
            [curl_timeout] => 10
            [curl_ssl_verifyhost] => 2
            [curl_ssl_verifypeer] => 1
            [curl_cainfo] => /home/content/00/6684400/html/html-tweetcomments/to/cacert.pem
            [curl_capath] => /home/content/00/6684400/html/html-tweetcomments/to
            [curl_followlocation] => 
            [curl_proxy] => 
            [curl_proxyuserpwd] => 
            [curl_encoding] => 
            [is_streaming] => 
            [streaming_eol] => 

            [streaming_metrics_interval] => 60
            [as_header] => 1
            [debug] => 
            [multipart] => 
        )

    [method] => POST
    [url] => https://api.twitter.com/oauth/access_token
    [signing_params] => oauth_consumer_key=htxmSKEwkd5jPB6z1bQI6Q&oauth_nonce=adb19fb2bc5f76060b63bcbb1b3e2b94&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1329438683&oauth_token=g3ekXAg9SwoYIge2l1E6JGwIQ02QYiha8uz5TMVA&oauth_verifier=vOrM6QWwGRpTEWgE2Kk2Y87DL1mlx324r4wh2SsUo&oauth_version=1.0
    [auth_params] => Array
        (
            [oauth_consumer_key] => htxmSKEwkd5jPB6z1bQI6Q
            [oauth_nonce] => adb19fb2bc5f76060b63bcbb1b3e2b94
            [oauth_signature] => E5Vb62A00L8Nj8uyt9MRKdFk6ck%3D
            [oauth_signature_method] => HMAC-SHA1
            [oauth_timestamp] => 1329438683
            [oauth_token] => g3ekXAg9SwoYIge2l1E6JGwIQ02QYiha8uz5TMVA
            [oauth_verifier] => vOrM6QWwGRpTEWgE2Kk2Y87DL1mlx324r4wh2SsUo
            [oauth_version] => 1.0
        )

    [request_params] => Array
        (
        )

    [base_string] => POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Faccess_token&oauth_consumer_key%3DhtxmSKEwkd5jPB6z1bQI6Q%26oauth_nonce%3Dadb19fb2bc5f76060b63bcbb1b3e2b94%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1329438683%26oauth_token%3Dg3ekXAg9SwoYIge2l1E6JGwIQ02QYiha8uz5TMVA%26oauth_verifier%3DvOrM6QWwGRpTEWgE2Kk2Y87DL1mlx324r4wh2SsUo%26oauth_version%3D1.0
    [signing_key] => fmNsDdu809uAARz0EslIL5Tj9m3XxLuaTVg6RSVnAQ&4K8chxSWwwQ5nk1HSQrrbNW23FIGWiNLMycoqqxUV0
    [auth_header] => OAuth oauth_consumer_key="htxmSKEwkd5jPB6z1bQI6Q", oauth_nonce="adb19fb2bc5f76060b63bcbb1b3e2b94", oauth_signature="E5Vb62A00L8Nj8uyt9MRKdFk6ck%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1329438683", oauth_token="g3ekXAg9SwoYIge2l1E6JGwIQ02QYiha8uz5TMVA", oauth_verifier="vOrM6QWwGRpTEWgE2Kk2Y87DL1mlx324r4wh2SsUo", oauth_version="1.0"
    [response] => Array
        (
            [headers] => Array
                (
                    [date] => Fri, 17 Feb 2012 00:31:23 GMT
                    [status] => 401 Unauthorized
                    [x_mid] => 1195d712f355657dc7944ba32517310a873d29e1
                    [x_revision] => DEV
                    [x_runtime] => 0.01222
                    [x_transaction] => c84c1b7c659ad830
                    [cache_control] => no-cache, no-store, must-revalidate, pre-check=0, post-check=0
                    [x_frame_options] => SAMEORIGIN
                    [expires] => Tue, 31 Mar 1981 05:00:00 GMT
                    [content_type] => text/html; charset=utf-8
                    [last_modified] => Fri, 17 Feb 2012 00:31:23 GMT
                    [pragma] => no-cache
                    [set_cookie] => _twitter_sess=BAh7CDoPY3JlYXRlZF9hdGwrCN1yuIg1ASIKZmxhc2hJQzonQWN0aW9uQ29u%250AdHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoHaWQiJWEz%250AMDBiNmY2YmVhODIxZjVlOGMzZjRiODYyMTMzOWRh--d554d0fb6e5d23c9c9a8a10bd72c968c5872ff88; domain=.twitter.com; path=/; HttpOnly
                    [vary] => Accept-Encoding
                    [content_encoding] => gzip
                    [content_length] => 21
                    [server] => tfe
                )

            [code] => 401
            [response] =>  
            [info] => Array
                (
                    [url] => https://api.twitter.com/oauth/access_token
                    [content_type] => text/html; charset=utf-8
                    [http_code] => 401
                    [header_size] => 1047
                    [request_size] => 541
                    [filetime] => -1
                    [ssl_verify_result] => 0
                    [redirect_count] => 0
                    [total_time] => 0.52167
                    [namelookup_time] => 3.3E-5
                    [connect_time] => 0.119133
                    [pretransfer_time] => 0.380061
                    [size_upload] => 0
                    [size_download] => 21
                    [speed_download] => 40
                    [speed_upload] => 0
                    [download_content_length] => 21
                    [upload_content_length] => -1
                    [starttransfer_time] => 0.521456
                    [redirect_time] => 0
                    [request_header] => POST /oauth/access_token HTTP/1.1
User-Agent: tmhOAuth 0.61+SSL - //github.com/themattharris/tmhOAuth
Host: api.twitter.com
Accept: */*
Accept-Encoding: deflate, gzip
Authorization: OAuth oauth_consumer_key="htxmSKEwkd5jPB6z1bQI6Q", oauth_nonce="adb19fb2bc5f76060b63bcbb1b3e2b94", oauth_signature="E5Vb62A00L8Nj8uyt9MRKdFk6ck%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1329438683", oauth_token="g3ekXAg9SwoYIge2l1E6JGwIQ02QYiha8uz5TMVA", oauth_verifier="vOrM6QWwGRpTEWgE2Kk2Y87DL1mlx324r4wh2SsUo", oauth_version="1.0"


                )

            [error] => 
            [errno] => 0
        )

)

【问题讨论】:

    标签: php twitter


    【解决方案1】:

    我也遇到了同样的情况——头撞墙——终于,终于找到了答案!虽然我得到与使用 401 代码相同的 tmhOAuth 错误输出,但我的错误日志显示 Undefined variable _SESSION。从这个SO 问题中,我发现您只需要一个session_start()。检查所有包含和必需的文件以及实际脚本(即使在 if/else 条件下),看看您是否没有破坏会话或只是没有启动会话。

    我希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      既然您说代码是在测试服务器上运行而不是在生产上运行,那么我认为代码没有任何问题。

      1. 您可以通过 twitter api 提供的 curl 测试脚本来确认。
      2. 请检查您的服务器时区是否准确。 https://dev.twitter.com/discussions/8147 可能会有所帮助。

      希望对你有帮助。

      【讨论】:

      • 我在使用VMware,暂停播放几次后时间不对!使时间正确,然后它又开始工作了。谢谢朋友:)
      【解决方案3】:

      我不确定,但至少我可以看到您确实收到了一条错误消息,即 401 Unauthorized。那里有你的回复。我也遇到了同样的问题,也在使用tmhOAuth。我建议,作为一个起点,以供将来参考,始终检查$_SESSION 的内容,因为那是tmh 存储vars 的地方 - 所以如果你在路上只有一两个步骤登录成功,信息在$_SESSION

      如果其他人知道这一点 - 请,我仍然卡住了!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-03
        • 2014-09-09
        • 2012-11-06
        • 2014-06-01
        • 2012-06-07
        • 1970-01-01
        • 2015-09-02
        • 2018-08-20
        相关资源
        最近更新 更多