Question

Question sur les primes

J'utilise l'application C # 3.5 Window Forms. J'utilise le code mentionné dans la réponse acceptée. et j'obtiens au-dessous de l'erreur

Le serveur distant a renvoyé une erreur: (401) non autorisé.

Un exemple de code permettant de vérifier le nom d'utilisateur et le mot de passe sera vraiment apprécié

Fin des questions relatives aux primes

J'ai une application avec le cas d'utilisation suivant: lorsque l'utilisateur commence à utiliser l'application, il entre son nom d'utilisateur et son mot de passe. Ensuite, à un stade beaucoup plus avancé, l’application pourra mettre à jour son statut.

J'utilise actuellement Twitterizer, mais je pense que la question dépasse la portée de la bibliothèque que j'utilise. Voici les deux lignes de code pertinentes:

Twitter twitter = new Twitter("username", "password", "source"); 
twitter.Status.Update("update");

La construction de l'objet Twitter ne génère pas d'exception si le nom d'utilisateur / mot de passe est incorrect. C'est probablement parce que rien n'est envoyé à ce stade. Par ailleurs, la mise à jour du statut génère une exception si le nom d'utilisateur / mot de passe n'est pas valide.

Mon problème est que je souhaite valider le nom d'utilisateur / mot de passe au moment de la saisie de l'utilisateur, et non lors d'une tentative de publication de la mise à jour.

Comment puis-je valider le nom d'utilisateur / mot de passe sans rien publier (dans Twitterizer ou autrement)?

Était-ce utile?

La solution

En jetant un coup d'œil à l'API verify_credentials mentionnée par peSHIr, j'ai écrit une petite routine qui semble faire l'affaire. Il est tard, mais j'ai pu le tester plusieurs fois et semble fonctionner.

Dans ma fonction, je retourne simplement true si je reçois un HttpResponseCode.OK, et false si je reçois autre chose ou une exception est levée. Si Twitter n'aime pas le nom d'utilisateur / mot de passe, une exception sera générée avec une erreur 401 (non autorisée).

public bool CheckTwitterCredentials(string UserName, string Password)
{
    // Assume failure
    bool Result = false;

    // A try except block to handle any exceptions
    try {
        // Encode the user name with password
        string UserPass = Convert.ToBase64String(
            System.Text.Encoding.UTF8.GetBytes(UserName + ":" + Password));

        // Create our HTTP web request object
        HttpWebRequest Request = 
            (HttpWebRequest)WebRequest.Create("http://twitter.com/account/verify_credentials.xml");

        // Set up our request flags and submit type
        Request.Method = "GET";
        Request.ContentType = "application/x-www-form-urlencoded";

        // Add the authorization header with the encoded user name and password
        Request.Headers.Add("Authorization", "Basic " + UserPass);

        // Use an HttpWebResponse object to handle the response from Twitter
        HttpWebResponse WebResponse = (HttpWebResponse)Request.GetResponse();

        // Success if we get an OK response
        Result = WebResponse.StatusCode == HttpStatusCode.OK;
    } catch (Exception Ex) {
        System.Diagnostics.Debug.WriteLine("Error: " + Ex.Message);
    }

    // Return success/failure
    return Result;
}

Autres conseils

Vous pouvez essayer d'utiliser l'API account / verify_credentials . Espérons que la bibliothèque d’API que vous utilisez prenne déjà en charge cela. Twitter est bien connu pour détester vraiment les programmeurs tiers, donc à moins que vous n’ayez une bonne raison de faire quelque chose avec Twitter, restez à l’écart ...

J'ai utilisé d'autres bibliothèques Twitter, mais aucune d'entre elles ne permet de vérifier la validité du nom d'utilisateur et du mot de passe. Cela est peut-être dû au fait que l'API Twitter n'a pas la possibilité de valider le nom d'utilisateur et le mot de passe, sauf si nous essayons de faire quelque chose qui nécessite une authentification.

Vous pouvez essayer d'obtenir une liste d'amis ou toute autre méthode nécessitant une authentification.

L'API Twitter ne prend pas en charge le nom d'utilisateur / mot de passe depuis des années. Au lieu de cela, vous avez OAuth, qui permet à l'utilisateur d'autoriser votre application à agir en son nom. Twitter possède un point de terminaison account / verify_credentials que vous pouvez utiliser pour vérifier si l'utilisateur qui a les jetons que vous avez toujours autorise votre application. Voici un exemple de la manière dont vous pourriez appeler ce point de terminaison avec LINQ to Twitter:

        var accounts =
            from acct in twitterCtx.Account
            where acct.Type == AccountType.VerifyCredentials
            select acct;

Vous pouvez consulter la documentation relative à Account / VerifyCredentials pour plus de détails. :

comme @ joe-mayo l'a informé, vous devez passer à OAuth. twitter a expiré v1 de son API et l’a documentée en https://dev.twitter.com/ docs / faq # 17750 .

Voici une fonction que j'ai écrite pour vérifier le nom d'utilisateur et le mot de passe Twitter en C #:

public bool isTwitterValid(string username, string password)
{
    try
    {
        string user = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password));
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://twitter.com/statuses/verify.xml");

        request.Method = "POST";
        request.ServicePoint.Expect100Continue = false;
        request.Headers.Add("Authorization", "Basic " + user);
        request.ContentType = "application/x-www-form-urlencoded";
        WebResponse response = request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());
        string responseString = reader.ReadToEnd();
        reader.Close();
    }
    catch (Exception ex)
    {
        if (ex.Message.Contains("404")) { return true; }
    }
    return false;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top