【问题标题】:Verify OAuth Token on Twitter在 Twitter 上验证 OAuth 令牌
【发布时间】:2011-09-03 13:26:57
【问题描述】:

在用户完成 oauth 进程后,我将来自 Twitter 的 oauth 信息存储在 Flash Cookie 中。 Twitter 表示,只有当 Twitter 或用户撤销应用程序的访问权限时,此令牌才会过期。

我可以打电话给 Twitter 以验证我存储的令牌没有被撤销吗?

【问题讨论】:

    标签: twitter oauth verification


    【解决方案1】:

    如果访问令牌过期,所有需要身份验证的 API 方法都将失败。但是验证用户是谁以及访问令牌仍然有效的具体方法是GET account/verify_credentials

    【讨论】:

    【解决方案2】:

    这个问题可能很老,但这个问题是为谷歌人(比如我自己)准备的。

    这是使用 Hammock 对 twitter 的调用:

        RestClient rc = new RestClient {Method = WebMethod.Get};
                RestRequest rr = new RestRequest();
                rr.Path = "https://api.twitter.com/1/account/verify_credentials.json";
                rc.Credentials = new OAuthCredentials
                                     {
                                         ConsumerKey = /* put your key here */,
                                         ConsumerSecret = /* put your secret here */,
                                         Token = /* user access token */,
                                         TokenSecret = /* user access secret */,
                                         Type = OAuthType.AccessToken
                                     };
                rc.BeginRequest(rr, IsTokenValid);
    

    回复如下:

        public void IsTokenValid(RestRequest request, RestResponse response, object userState)
        {
            if(response.StatusCode == HttpStatusCode.OK)
            {
                var user = userState;
                Helper.SaveSetting(Constants.TwitterAccess, user);
            }
            else
            {
                Dispatcher.BeginInvoke(() => MessageBox.Show("This application is no longer authenticated "))
            }
        }
    

    我总是从 SO 那里借用解决方案,这是我第一次尝试回馈,尽管这个问题已经很晚了。

    【讨论】:

      【解决方案3】:

      手动调试时:

      curl \
         --insecure https://api.twitter.com/1/account/verify_credentials.json?oauth_access_token=YOUR_TOKEN
      

      【讨论】:

      • 第 1 版 twitter api 不再有效。您需要使用需要 oauth 流程的 1.1 api,因此您不能再只传递令牌。
      • 我们现在如何使用 1.1 来做到这一点?应该在标头中传递访问令牌和访问秘密吗?钥匙是什么?
      【解决方案4】:

      我正在使用TwitterOAuth API,这是基于接受的答案的代码。

      $connection     =   new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $twitter_oauth_token, $twitter_oauth_secret); 
      $content        =   $connection->get("account/verify_credentials");                        
      if($connection->getLastHttpCode() == 200):
          // Connection works fine.
      else:
          // Not working
      endif;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-06
        • 2020-04-21
        相关资源
        最近更新 更多