سؤال

فضله السؤال

أنا باستخدام c# 3.5 نافذة أشكال التطبيق.أنا باستخدام التعليمات البرمجية المذكورة في الجواب المقبول.و أنا على الحصول على أقل خطأ

أرجع الملقم البعيد خطأ:(401) غير المصرح به.

نموذج التعليمات البرمجية للتحقق من اسم المستخدم وكلمة المرور سوف يكون موضع تقدير حقا

فضله السؤال ينتهي


يجب تطبيق مع الاستخدام التالية-الحالة:عندما يقوم المستخدم أولا يبدأ باستخدام التطبيق ، كان له مدخلات المستخدم وكلمة المرور.ثم في مرحلة لاحقة ، تطبيق التحديث وضعه.

حاليا أنا أستخدم Twitterizer ، ولكن أعتقد أن السؤال هو خارج نطاق المكتبة أنا باستخدام.فيما يلي اثنين ذات الصلة خطوط من التعليمات البرمجية:

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

بناء على تويتر كائن لا رمي استثناء إذا كان اسم المستخدم/كلمة السر غير صحيحة.وربما هذا هو لأنه يتم إرسال أي شيء في هذه المرحلة.من ناحية أخرى, تحديث الحالة لا رمي استثناء إذا كان اسم المستخدم/كلمة المرور غير صالحة.

مشكلتي هي أنني أريد أن التحقق من صحة اسم المستخدم/كلمة المرور عند نقطة إدخال المستخدم ، وليس عند محاولة نشر التحديث.

كيف يمكنني التحقق من صحة اسم المستخدم/كلمة المرور دون نشر أي شيء (في Twitterizer أو خلاف ذلك)?

هل كانت مفيدة؟

المحلول

أخذ نظرة سريعة على verify_credentials API كما ذكر peSHIr كتبت القليل من الروتين الذي يبدو أن تفعل خدعة.انها في وقت متأخر ، ولكن كنت قادرة على اختبار عدة مرات و يبدو أن العمل.

في بلدي وظيفة ، أنا فقط أرد صحيح إذا كنت لا تحصل على HttpResponseCode.طيب و false إذا كنت تحصل على أي شيء آخر أو إلقاء استثناء.إن تويتر لا يحب المستخدم/كلمة المرور استثناء سيتم طرح مع الخطأ 401 (غير مخول.)

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

نصائح أخرى

يمكنك محاولة استخدام استدعاء API حساب/verify_credentials.نأمل مكتبة API كنت تستخدم بالفعل يدعم هذا..تويتر هو سيئة السمعة الآن حقا كره الطرف الثالث المبرمجين لذلك لم يكن لديك سبب وجيه أن تفعل شيئا مع تويتر ، مجرد البقاء بعيدا...

لقد استخدمت تويتر أخرى المكتبات ولكن لا أحد منهم الدعم التحقق من اسم المستخدم وكلمة المرور validitity.هذا قد يكون بسبب تويتر API لا المنشأة للتحقق من صحة اسم المستخدم وكلمة المرور ما لم نحاول أن نفعل شيئا مما يتطلب مصادقة.

شيء واحد يمكنك القيام به هو محاولة الحصول على قائمة الأصدقاء أو أي من الطرق الأخرى التي تتطلب المصادقة.

تويتر API لم معتمدة اسم المستخدم/كلمة المرور في سنوات.بدلا من ذلك, عليك أوث, مما يتيح للمستخدم يأذن التطبيق الخاص بك إلى نيابة عنهم.تويتر لديه حساب/verify_credentials نقطة النهاية يمكنك استخدامها للتحقق من ما إذا كان المستخدم من الرموز لديك لا يزال يأذن التطبيق الخاص بك.هنا مثال على كيف يمكن أن نسمي هذا نقطة النهاية مع LINQ على تويتر:

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

يمكنك زيارة حساب/VerifyCredentials الوثائق لمزيد من التفاصيل:

كما @جو-مايو أبلغ لديك للتبديل إلى أوث.تويتر انتهت v1 من API و أنها وثقت ذلك في العنوان التالي https://dev.twitter.com/docs/faq#17750.

وهنا وظيفة كتبت من شأنها أن تحقق تويتر اسم المستخدم وكلمة المرور في 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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top