Dropbox - 使用token_from_oauth1将oauth1迁移到oauth2

时间:2015-11-13 19:25:27

标签: c# oauth dropbox

我一直在使用Sharpbox工具包使用Dropbox。它基于oAuth1,因此我的用户拥有一个充满oAuth1访问令牌的数据库。

我想转换为新的Dropbox API,它基于oAuth2。我看到Dropbox的v1规范中有一个“token_from_oauth1”端点(引用here),但我没有弄清楚如何成功连接到这个端点来升级用户的现有令牌。 (我正在使用C#/。NET)。

有人能指出一些示例代码,说明如何创建经过适当身份验证的调用来执行此操作吗?我认为问题在于尝试正确验证/签署请求。 (我现有的所有Dropbox调用都是由Sharpbox库完成的,所以我看不出它是如何进行身份验证的。)

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用简单的休息客户端(如RestSharp)并执行此类调用

我目前正在使用xamarin应用程序执行此操作,我使用xamarin dropbox core 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;

答案 1 :(得分:-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);