IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[WinForm] recupérer access token drop box


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut [WinForm] recupérer access token drop box
    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

  2. #2
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    bonjour,

    voila j'arrive à recupérer mon token d'accès pour cela je doit autoriser mon application avec cet url

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Process.Start("https://www.dropbox.com/1/oauth/authorize?oauth_token=" + requestToken);
    le problème maintenant vien du fait que je doit mettre un point d'arrêt sur la ligne du dessous pour cliquer sur le bouton autoriser de la page internet que cela m'ouvre et ensuite clique sur F5 pour continuer l'execution.
    Ce que je voudrai c'est que le thread attend que j'ai cliquer sur ce bouton autoriser mais qui se trouve dans mon browser firefox par exemple.
    Je n'ai aucune idée de comment m y prendre à ce niveau la.
    Auriez-vous des conseils???

    D'avance je vous remercie.

    EDIT :

    j'ai tenter de bricoler cette "chose" mais sa ne fonctionne pas :
    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
     
    Process p = new Process();
                ProcessStartInfo pInfo = new ProcessStartInfo("https://www.dropbox.com/1/oauth/authorize?oauth_token=" + requestToken);
     
                try
                {
                    p.StartInfo = pInfo;
                    p.Start();
                    bool isRunning = true;
                    do
                    {
                        if (p.HasExited)
                        {
                            isRunning = false;
                        }
                    } while (isRunning);
                    p.Close();
                }
                catch (Exception)
                {
     
                    throw;
                }

Discussions similaires

  1. SFTP : Utiliser un dossier comme un "drop-box"
    Par pierrerasp dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2014, 13h26
  2. Drop Box : impossible à supprimer ?
    Par pb8808 dans le forum Mac OS X
    Réponses: 2
    Dernier message: 14/11/2011, 20h36
  3. recupérer access sur un type non contrain
    Par divinThomas dans le forum Ada
    Réponses: 1
    Dernier message: 20/08/2010, 13h34
  4. Mise à jour Drop Box (menu déroulant)
    Par Leonheart dans le forum IHM
    Réponses: 3
    Dernier message: 25/04/2007, 16h52
  5. [Access 2003] Drop Table
    Par nico33307 dans le forum Access
    Réponses: 3
    Dernier message: 29/05/2006, 23h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo