2011-05-27 34 views
16

我在用戶通過oauth過程後,將來自Twitter的oauth信息存儲在Flash Cookie中。 Twitter表示,如果Twitter或用戶撤銷該應用的訪問權限,該令牌應該只會過期。在Twitter上驗證OAuth標記

是否有一個電話,我可以讓Twitter來驗證我的存儲的令牌還沒有被撤銷?

回答

17

如果訪問令牌到期,所有需要認證的API方法都會失敗。但是具體的方法來驗證用戶是誰,並且訪問令牌仍然有效是GET account/verify_credentials

+0

不錯,謝謝。不知道爲什麼我找不到那個。 – shanethehat 2011-05-28 13:26:05

+6

BTW-現在是https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials,API的版本爲1.1 – 2013-03-19 20:43:36

1

當手動調試:

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

twitter api的版本1不再有效。你需要使用1.1 api,它需要一個oauth流,所以你不能再傳遞一個令牌。 – chrisst 2016-06-29 22:59:07

+0

我們現在如何用1.1來做到這一點?描述訪問令牌和訪問祕密在標題中傳遞?關鍵是什麼? – Jonny 2017-09-08 02:02:11

3

這個問題可能是舊的,但是這一次是針對Google員工(如我)。

下面是一個使用吊牀嘰嘰喳喳電話:

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解決方案,這是我在付出,儘管相當的第一次嘗試遲到的問題。

1

我使用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;