ارسال پیام در توییتر توسطC# ASP.NET

امکان ارسال پیام در توییتر توسط API از نسخه 1.0 قطع شده است و برنامه نویسان وب دچار مشکل شده اند. لذا به این منظور می توان از متد OAuth توییتر استفاده نمود. در ادامه مراحل استفاده از این متد توسط کد C# مرحله به مرحله شرح داده خواهد شد:

گام اول:

قبل از هر چیز برای ارسال پیام در توییتر، حساب کاربری مخصوص خود را ایجاد نمایید.

Twitter1

گام دوم:

سپس از لینک https://apps.twitter.com اقدام به ایجاد Twitter Application برای دریافت دسترسی به Token مربوطه نمایید. مطابق تصویر زیر برای این منظور باید اطلاعات مورد نیاز را تکمیل نمود:

1.       Name: نام دلخواه برای Application که حداکثر 32 کاراکتر می باشد.

2.      Description: توضیح اضافه در مورد Application که حداقل 10 و حداکثر 200 کاراکتر می باشد.

3.     Website: نام وب سایت معتبر و ثبت شده ای که کاربران می توانند نرم افزار شما را از آن دانلود کرده و یا اطلاعاتی در مورد آن به دست آورند.

4.      Call Back URL: آدرس برگشت که پس از تایید اعتبار توسط OAuth به آن بازگردانده می شوید. برای محدود کردن Application از بازگشت، این فیلد می تواند خالی باشد.

پس از تکمیل موارد فوق بر روی دکمه ایجاد application کلیک نمایید.

Twitter2

گام سوم:

پس از ایجاد Application اطلاعات مربوط به آن را مشاهده خواهید نمود  و با توجه به درخواست خود می توانید Token و سطوح دسترسی مورد نیاز خود را ایجاد نمایید:  

1.       قبل از هر چیز باید Token مربوطه را ایجاد نمایید. به این منظور برای نرم افزار شما token منحصر به فردی ایجاد خواهد شد.

Twitter3

2.      سپس سطح دسترسی دلخواه برای ارسال پیام در نرم افزار را انتخاب نمایید. در صورتی که خواندن و نوشتن و دسترسی به پیام مستقیم توسط نرم افزار مورد نیاز است، گزینه آخر را انتخاب نمایید.

Twitter4

3.     در نهایت می توانید کد های Token و سطوح دسترسی و رمز آن ها مشاهده نمایید. برای استفاده از توییتر نرم افزار خود باید از این کد ها در نرم افزار خود استفاده نمایید.

Twitter5

Twitter6

گام چهارم:

در این مرحله می توان کد های ایجاد شده را در نرم افزار استفاده نمود.

برای مثال متد PostMessageToTwitter پیام دلخواه را در Twitter ارسال می نماید:

 

public static void PostMessageToTwitter(string message)
    {
        //The facebook json url to update the status
        string twitterURL = "https://api.twitter.com/1.1/statuses/update.json";

        //set the access tokens (REQUIRED)
        string oauth_consumer_key = "****";
        string oauth_consumer_secret = "****";
        string oauth_token = "****";
        string oauth_token_secret = "****";

        // set the oauth version and signature method
        string oauth_version = "1.0";
        string oauth_signature_method = "HMAC-SHA1";

        // create unique request details
        string oauth_nonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));
        System.TimeSpan timeSpan = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc));
        string oauth_timestamp = Convert.ToInt64(timeSpan.TotalSeconds).ToString();

        // create oauth signature
        string baseFormat = "oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}" +
                            "&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&status={6}";

        string baseString = string.Format(
            baseFormat,
            oauth_consumer_key,
            oauth_nonce,
            oauth_signature_method,
            oauth_timestamp, oauth_token,
            oauth_version,
            Uri.EscapeDataString(message)
            );

        string oauth_signature = null;
        using (
            HMACSHA1 hasher =
                new HMACSHA1(
                    ASCIIEncoding.ASCII.GetBytes(Uri.EscapeDataString(oauth_consumer_secret) + "&" +
                                                 Uri.EscapeDataString(oauth_token_secret))))
        {
            oauth_signature =
                Convert.ToBase64String(
                    hasher.ComputeHash(
                        ASCIIEncoding.ASCII.GetBytes("POST&" + Uri.EscapeDataString(twitterURL) + "&" +
                                                     Uri.EscapeDataString(baseString))));
        }

        // create the request header
        string authorizationFormat = "OAuth oauth_consumer_key=\"{0}\", oauth_nonce=\"{1}\", " +
                                     "oauth_signature=\"{2}\", oauth_signature_method=\"{3}\", " +
                                     "oauth_timestamp=\"{4}\", oauth_token=\"{5}\", " + "oauth_version=\"{6}\"";

        string authorizationHeader = string.Format(
            authorizationFormat,
            Uri.EscapeDataString(oauth_consumer_key),
            Uri.EscapeDataString(oauth_nonce),
            Uri.EscapeDataString(oauth_signature),
            Uri.EscapeDataString(oauth_signature_method),
            Uri.EscapeDataString(oauth_timestamp),
            Uri.EscapeDataString(oauth_token),
            Uri.EscapeDataString(oauth_version)
            );

        HttpWebRequest objHttpWebRequest = (HttpWebRequest) WebRequest.Create(twitterURL);
        objHttpWebRequest.Headers.Add("Authorization", authorizationHeader);
        objHttpWebRequest.Method = "POST";
        objHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
        using (Stream objStream = objHttpWebRequest.GetRequestStream())
        {
            byte[] content = ASCIIEncoding.ASCII.GetBytes("status=" + Uri.EscapeDataString(message));
            objStream.Write(content, 0, content.Length);
        }

        var responseResult = "";
        try
        {
            //success posting
            WebResponse objWebResponse = objHttpWebRequest.GetResponse();
            StreamReader objStreamReader = new StreamReader(objWebResponse.GetResponseStream());
            responseResult = objStreamReader.ReadToEnd().ToString();
        }
        catch (Exception ex)
        {
            //throw exception error
            responseResult = "Twitter Post Error: " + ex.Message.ToString() + ", authHeader: " + authorizationHeader;
        }
    }


آخرین بروزرسانی
۲۴ مهر ۱۳۹۶ 
تعداد کلیک
۳,۱۸۳

فهرست نظرها و ارسال نظر جدید

نام را وارد کنید
ایمیل را وارد کنید
تعداد کاراکتر باقیمانده: 1000
نظر خود را وارد کنید