Frage

Bounty Frage

Ich bin mit c # 3.5 Fenster Forms-Anwendung. Ich verwende den Code in der akzeptierten Antwort erwähnt. und ich bin unten Fehler immer

Der Remoteserver hat einen Fehler zurückgegeben:. Unauthorized (401)

Beispielcode den Benutzernamen zu überprüfen und Passwort wirklich geschätzt wird

Bounty Frage Ends


Ich habe eine Anwendung mit dem folgenden Anwendungsfall: Wenn der Benutzer zuerst die Anwendung startet mit, er gibt seinen Benutzernamen und Passwort ein. Dann wird zu einem viel späteren Zeitpunkt kann die Anwendung seinen Status aktualisieren.

Zur Zeit verwende ich Twitterizer, aber ich glaube, die Frage über den Rahmen der spezifischen Bibliothek ist ich verwende. Im Folgenden sind die beiden relevanten Codezeilen:

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

Der Bau des Twitter Objekts wirft keine Ausnahme, wenn der Benutzername / Passwort falsch ist. Dies ist wahrscheinlich, weil nichts an dieser Stelle geschickt. Auf der anderen Seite, hat das Status-Update eine Ausnahme aus, wenn der Benutzername / Passwort ungültig ist.

Mein Problem ist, dass ich das Benutzername / Passwort an dem Punkt der Benutzereingabe überprüfen möge, nicht, wenn sie versuchen, das Update zu veröffentlichen.

Wie kann ich die Benutzername / Passwort bestätigen, ohne etwas zu veröffentlichen (in Twitterizer oder anderweitig)?

War es hilfreich?

Lösung

einen kurzen Blick auf die verify_credentials API Ausge von peSHIr erwähnt, schrieb ich ein wenig Routine, die den Trick zu tun scheint. Es ist spät, aber ich konnte es ein paar Mal testen und scheint zu funktionieren.

In meiner Funktion, ich bin wieder nur wahr, wenn ich mich einen HttpResponseCode.OK bekommen, und falsch, wenn ich etwas anderes oder eine Ausnahme ausgelöst wird erhalten. Wenn twitter nicht die uid / Passwort eine Ausnahme mit einem 401-Fehler geworfen werden mag (nicht autorisiert.)

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;
}

Andere Tipps

Sie könnten versuchen, die API zu verwenden, rufen Sie Konto / verify_credentials . Hoffentlich wird die API-Bibliothek Sie bereits verwenden unterstützt diese .. Twitter ist jetzt berüchtigt für wirklich Dritte Programmierer hassen, so sei denn, Sie haben guten Grund etwas mit Twitter zu tun, nur bleiben weg ...

Ich habe andere Twitter-Bibliotheken verwendet, aber keiner von ihnen unterstützen den Benutzernamen und das Passwort für validitity überprüfen. Dies könnte sein, weil Twitter API den Benutzernamen und das Passwort nicht die Möglichkeit haben, zu bestätigen, es sei denn wir versuchen, etwas zu tun, die eine Authentifizierung erforderlich ist.

Eine Sache, die Sie tun können, ist versuchen Freundesliste oder andere Methoden zu erhalten, die eine Authentifizierung erforderlich ist.

Twitter-API nicht Benutzername / Passwort in Jahren unterstützt. Stattdessen müssen Sie OAuth, die der Benutzer in ihrem Namen zu handeln genehmigt Ihre Anwendung kann. Twitter hat eine Konto / verify_credentials Endpunkt Sie überprüfen können, ob wer der Benutzer ist Token Sie noch autorisiert Ihre App. Hier ist ein Beispiel dafür, wie Sie diesen Endpunkt mit LINQ to Twitter nennen könnten:

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

Sie können unter Konto / verifyCredentials Dokumentation für weitere Details :

als @ joe-Mayo informiert, müssen Sie auf OAuth wechseln. twitter abgelaufen v1 ihre API und sie dokumentierte, dass auf folgende URL https://dev.twitter.com/ docs / faq # 17750 .

Hier ist eine Funktion, die ich schrieb, dass Twitter Benutzername und Passwort in C # überprüfen wird:

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top