2015-11-13 74 views
0

我一直在使用Dropbox通過Sharpbox工具箱一段時間。它基於oAuth1,因此我的數據庫爲我的用戶提供了完整的oAuth1訪問令牌。Dropbox - 使用token_from_oauth1將oauth1移植到oauth2

我想轉換爲新的Dropbox API,它基於oAuth2。我發現Dropbox的v1規範中有一個「token_from_oauth1」端點(參考文獻here),但我沒有弄清楚如何成功連接到這個端點來升級用戶的現有令牌。 (我使用C#/ .NET)。

任何人都可以指向我的示例代碼,顯示如何創建一個正確的身份驗證呼叫來執行此操作?我認爲問題在於嘗試正確驗證/簽署請求。 (我現有的所有Dropbox調用均由Sharpbox庫完成,因此我無法看到它如何進行身份驗證)。

謝謝!

+0

[交聯以供參考:https://www.dropboxforum.com/hc/en-us/community/posts/204375656-Migrating-oauth1-to-oauth2-using-token-from-oauth1 - ] – Greg

回答

-1

這裏有一個適用於Twitter oAuth 1.0的庫(見http://www.voiceoftech.com/swhitley/?p=681),它實際上可以使oAuth 1.0認證的調用變得容易。所以,下面的代碼看起來工作非常適合我:

oAuthTwitter oat = new oAuthTwitter(); 
oat.Token = <oauth 1.0 token>; 
oat.TokenSecret = <oauth 1.0 secret>; 
oat.ConsumerKey = <application key>; 
oat.ConsumerSecret = <application secret>; 
string resultJSON = oat.oAuthWebRequest(oAuthTwitter.Method.POST, "https://api.dropboxapi.com/1/oauth2/token_from_oauth1", null); 
0

你可以用一個簡單的REST客戶端(像RestSharp)和做這樣

目前我在做這在一個電話得到這個xamarin應用程序,我使用xamarin dropbox核心api登錄,並獲取oauth_token,oauth_consumer_key和oauth_signature。如果你用c#管理oauth1流,那麼很容易獲得oauth2標記。

  var rclient = new RestSharp.RestClient("https://api.dropboxapi.com/1/"); 
      var rrequest = new RestSharp.RestRequest("oauth2/token_from_oauth1", Method.POST); 
      rrequest.AddHeader("Authorization", "OAuth oauth_version=\"1.0\", oauth_signature_method=\"PLAINTEXT\""); 

      rrequest.AddParameter("oauth_consumer_key", store.GetConsumerKey()); 
      rrequest.AddParameter("oauth_token", store.GetAccessToken()); 
      rrequest.AddParameter("oauth_signature", String.Concat(App.DropboxAppSecret, "&", store.GetAccessTokenSecret())); 

      var rresponse = rclient.Execute(rrequest); 
      string content = rresponse.Content;