繁体   English   中英

Dropbox-使用token_from_oauth1将oauth1迁移到oauth2

[英]Dropbox - Migrating oauth1 to oauth2 using token_from_oauth1

我已经通过Sharpbox工具包使用Dropbox已有一段时间了。 它基于oAuth1,因此我的数据库为我的用户提供了完整的oAuth1访问令牌。

我想转换为基于oAuth2的新Dropbox API。 我看到有在Dropbox的的第一版规范(参考“token_from_oauth1”端点这里 ),但我没有搞清楚如何成功地连接到这个端点升级用户现有的令牌。 (我正在使用C#/。NET)。

谁能指出一些示例代码,该代码演示如何创建经过正确身份验证的呼叫以执行此操作? 我认为问题出在尝试正确验证/签名请求。 (我所有现有的保管箱调用都由Sharpbox库完成,因此我看不到它如何进行身份验证)。

谢谢!

您可以使用一个简单的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;

有一个用于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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM