Bonjour,

Apres avoir récupérer le requestToken et secrectRequestToken je souhaiterai récupérer l access token. Seulement petit bémol le serveur de dropbox me retourne une erreur 401 quand je veux la réponse serveur pour ce token d'accès.

voici comment je récupère le request token :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
            authentification = new OAuthBase();
            uriRequestToken = new Uri("https://api.dropbox.com/1/oauth/request_token");
            uriAccessToken = new Uri("https://api.dropbox.com/1/oauth/access_token");
 
            this.consumerKey = consumerKey;
            this.secretKey = secretKey;
 
            nonce = authentification.GenerateNonce();
            timeStamp = authentification.GenerateTimeStamp();
 
            signature = authentification.GenerateSignature(uriRequestToken, consumerKey, secretKey, string.Empty,
                string.Empty, "GET", timeStamp, nonce, out requestNormalizedUrl, out requestParameters);
 
            signature = HttpUtility.UrlEncode(signature);
 
            StringBuilder requestUri = new StringBuilder(uriRequestToken.ToString());
            requestUri.AppendFormat("?oauth_consumer_key={0}&", consumerKey);
            requestUri.AppendFormat("oauth_nonce={0}&", nonce);
            requestUri.AppendFormat("oauth_timestamp={0}&", timeStamp);
            requestUri.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");
            requestUri.AppendFormat("oauth_version={0}&", "1.0");
            requestUri.AppendFormat("oauth_signature={0}", signature);
 
            this.requestUri = requestUri.ToString();
 
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(this.requestUri));
            request.Method = WebRequestMethods.Http.Get;
 
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
 
            var queryString = new StreamReader(response.GetResponseStream()).ReadToEnd();
 
            var parts = queryString.Split('&');
            requestToken = parts[1].Substring(parts[1].IndexOf('=') + 1);
            requestSecretToken = parts[0].Substring(parts[0].IndexOf('=') + 1);
et ici pour récupérer l'access token :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
request = null;
            response.Close();
            response = null;
            nonce = authentification.GenerateNonce();
            timeStamp = authentification.GenerateTimeStamp();
            signature = authentification.GenerateSignature(uriAccessToken, consumerKey, secretKey,
                requestToken, RequestSecretToken, "POST", timeStamp, nonce,
                OAuthBase.SignatureTypes.HMACSHA1, out accessNormalizedUrl, out accessParameters);
 
            signature = HttpUtility.UrlEncode(signature);
 
            requestUri = new StringBuilder(uriAccessToken.ToString());
            requestUri.AppendFormat("?oauth_consumer_key={0}&", consumerKey);
            requestUri.AppendFormat("oauth_token={0}&", requestToken);
            requestUri.AppendFormat("oauth_nonce={0}&", nonce);
            requestUri.AppendFormat("oauth_timestamp={0}&", timeStamp);
            requestUri.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");
            requestUri.AppendFormat("oauth_version={0}&", "1.0");
            requestUri.AppendFormat("oauth_signature={0}", signature);
 
            byte[] postDataEncoded = System.Text.Encoding.UTF8.GetBytes(this.requestUri);
            request = (HttpWebRequest)WebRequest.Create(new Uri(requestUri.ToString()));
 
            request.ProtocolVersion = HttpVersion.Version10;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = postDataEncoded.Length;
            request.PreAuthenticate = false;
            request.ContentLength = 0;
            request.AllowWriteStreamBuffering = false;
            request.KeepAlive = false;
            /*try
            {*/
                response = (HttpWebResponse)request.GetResponse();//401 ici
 
                queryString = new StreamReader(response.GetResponseStream()).ReadToEnd();
                parts = queryString.Split('&');
                accessToken = parts[1].Substring(parts[1].IndexOf('=') + 1);
                accessSecretToken = parts[0].Substring(parts[0].IndexOf('=') + 1);
            /*}
            catch { }*/
le code est un peu barbar mais changera plus tard