рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕рднреА рдХреНрдпреВрдмреНрд╕ рдХреЛ рдореЛрдбрд╝рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ ...
рдпрджрд┐ рдЯреНрд╡рд┐рдЯрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛ рдЖрдкрдХреА рдХрд┐рд╕реНрдордд рдереА, рд▓реЗрдХрд┐рди рдЖрдк рдЕрднреА рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдПрдЧрд╛ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЯреЗрдк рдФрд░ рдирд┐рдЬреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЯреНрд╡реАрдЯ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рдЕрдм рдЕрдВрдХ рдХреЗ рд▓рд┐рдП:
1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ
рдЯреНрд╡рд┐рдЯрд░ рдЕрдХрд╛рдЙрдВрдЯ рдЪрд╛рд╣рд┐рдП ред рдЕрднреА рддрдХ рдирд╣реАрдВ? рдлрд┐рд░, рдпрд╣ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рд╣рдо рд╕реНрдореГрддрд┐ рдореЗрдВ рдЖрдкрдХреЗ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░
рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред
2. рдЕрдм рд╣рдо
рдЯреНрд╡рд┐рдЯрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдВрдЧреЗ, рдЬрд╣рд╛рдВ, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
рдЯреНрд░рд┐рдЯрд░
рд▓реЙрдЧрд┐рди рдФрд░
рдкрд╛рд╕рд╡рд░реНрдб ред рдПрдХ рдмрд╛рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЦрд╛рддрд╛ рдореЗрдиреВ рдореЗрдВ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдмрд┐рдВрджреБ "рдореЗрд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ" рдФрд░ рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдкрд░, рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ


рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдлрд╝реАрд▓реНрдб рднрд░рдиреЗ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, 2 рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЗрд╕реЗ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди) рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛:
рдЙрдкрднреЛрдХреНрддрд╛ рдХреА рдФрд░
рдЙрдкрднреЛрдХреНрддрд╛ рд░рд╣рд╕реНрдпрд╡реЗ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдЯреИрдм рдХреЗ OAuth рд╕реЗрдЯрд┐рдВрдЧ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

3. рдЯреНрд╡рд┐рдЯрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдЕрдЧрд▓рд╛ рдЪрд░рдг OAuth рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ-
C # рдореЗрдВ рд╕реНрд╡рдпрдВ рдЯреНрд╡рд┐рдЯрд░ рд▓реЗрдЦ
ред рднрд╛рдЧ 1: OAuth рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЖрдкрдХреЛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рдЗрд╕ рд▓реЗрдЦ рд╕реЗред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рдЕрдВрдд рдореЗрдВ рдЖрдк OAuth рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдЧреБрдЬрд░реЗрдВрдЧреЗ рдФрд░ 2 рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореВрд▓реНрдп рдЖрдкрдХреЛ рд╕реМрдВрдкреЗ рдЬрд╛рдПрдВрдЧреЗ:
рдкрд╣реБрдВрдЪ рдЯреЛрдХрди рдФрд░
рдкрд╣реБрдВрдЪ рдЧреБрдкреНрдд рд░рд╣рд╕реНрдпрд╡реЗ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдЯреИрдм рдХреЗ рдЖрдкрдХреЗ рдкрд╣реБрдВрдЪ рдЯреЛрдХрди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрд╕реА рдЦрдВрдб рдореЗрдВ
рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░ рдлрд╝реАрд▓реНрдб рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЯреНрд╡реАрдЯ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдФрд░ рдирд┐рдЬреА рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ
рд░реАрдб, рд░рд╛рдЗрдЯ рдФрд░ рдбрд╛рдпрд░реЗрдХреНрдЯ рдореИрд╕реЗрдЬ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдкрд░ рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ OAuth рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдЯреНрд╡рд┐рдЯрд░ рдЦрд╛рддрд╛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ "рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рдореЗрдиреВ рдЦреЛрд▓реЗрдВ, рдлрд┐рд░
рдЯреНрд╡рд┐рдЯрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ рдкрдВрдЬреАрдХреГрдд рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╡рд╣рд╛рдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

4. рдЕрдм рдЙрди рдЪрд░рдгреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ рдЬреЛ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реБрдП рдереЗ:
рдЙрдкрднреЛрдХреНрддрд╛ рдХреБрдВрдЬреАрдЙрдкрднреЛрдХреНрддрд╛ рд░рд╣рд╕реНрдпрдкрд╣реБрдВрдЪ рдЯреЛрдХрдирдкрд╣реБрдВрдЪ рдЧреБрдкреНрдд рд░рд╣рд╕реНрдпрд╣рдо MessageSender рдХреНрд▓рд╛рд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдореЗрдВ рд▓рдЧреЗ рд░рд╣реЗрдВрдЧреЗ:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.Net; using System.IO; namespace TwitterOAuth { class MessageSender { private readonly string consumerKey; private readonly string consumerSecret; private readonly string oauthToken; private readonly string oauthTokenSecret; private const string headerFormat = "OAuth oauth_nonce=\"{0}\", oauth_signature_method=\"{1}\", " + "oauth_timestamp=\"{2}\", oauth_consumer_key=\"{3}\", " + "oauth_token=\"{4}\", oauth_signature=\"{5}\", " + "oauth_version=\"{6}\"";
рдЯреЗрдк рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, SendTwit рд╡рд┐рдзрд┐ ("рдХреБрдЫ рд╕рдВрджреЗрд╢") рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ,
рдФрд░ рдПрдХ рдирд┐рдЬреА рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо SendDirectMessage рдкрджреНрдзрддрд┐ ("рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛", "рдХреБрдЫ рд╕рдВрджреЗрд╢") рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ
static void Main(string[] args) {
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреЛ рдмрд╛рд░ рдПрдХ рд╣реА рд╕рдВрджреЗрд╢ рдЯреЗрдк рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рдпрд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рд╣реИ:

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ
REST API v1.1 рд░рд┐рд╕реЛрд░реНрд╕ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рд╣реИ ред
рдирд┐рдЬреА рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛрдб рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП
рдЧрдП рд╣реИрдВ: screen_name рдФрд░ рдкрд╛рда, рдФрд░ resource_url рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрд░реЛрдз рдЕрдиреБрднрд╛рдЧ, POST рдлрд╝реАрд▓реНрдб
private string GetPostDirectMessageBaseString(string text, string screen_name, string oauth_token, string oauth_token_secret, out string post_data, out string resource_url) { post_data = "screen_name=" + Uri.EscapeDataString(screen_name) + "&text=" + Uri.EscapeDataString(text); resource_url = "https://api.twitter.com/1.1/direct_messages/new.json"; return GetBaseString(oauth_token, oauth_token_secret, post_data, resource_url); }
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐
& рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмреАрдЪ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЧреЗрдЯрдмреЗрд╕рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкрджреНрдзрддрд┐ рдореЗрдВ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдмреЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЖрдк рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OAuth рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦреЛрд▓реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдирд┐рдЬреА рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ , рджрд╛рдИрдВ рдУрд░ OAuth рдЯреВрд▓ рдвреВрдВрдвреЗрдВ, рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЬрдирд░реЗрдЯ Oauth рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛

рдлрд┐рд░ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдмреЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдСрдерд░рд╛рдЗрдЬреЗрд╢рди рд╣реЗрдбрд░ рдЖрджрд┐ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рд╕реМрднрд╛рдЧреНрдп рд╣реИ