рдпрд╣ рдЖрд▓реЗрдЦ ASP.NET Core C # рдкрд░ VK рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЪреИрдЯ рдмреЙрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЕрдзреНрдпрд╛рдп 1. рддреИрдпрд╛рд░реА
рдЖрдЗрдП рдПрдХ рд╕рдореБрджрд╛рдп рдмрдирд╛рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред


рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдореБрджрд╛рдп рдЪреБрдиреЗрдВ

рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ рдФрд░ рдЖрдкрдХрд╛ рдХрд╛рдо рд╣реЛ рдЧрдпрд╛! рд╕рдореВрд╣ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред

рдПрдкреАрдЖрдИ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ

API рдХреБрдВрдЬреА рдмрдирд╛рдПрдВ (рд╕рднреА рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдВ)

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

"рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢" рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА:
- рдкреЗрд╢ рд╣реИ рд╡реАрдХреЗ рдПрдкреАрдЖрдИ
- рдХреЙрд▓рдмреИрдХ рдПрдкреАрдЖрдИ рд╡реАрдХреЗ
- Json рд╕реНрдХреАрдорд╛
рдЕрдзреНрдпрд╛рдп 2. рдХреЙрд▓рдмреИрдХ рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
рдЕрдкрдирд╛ рдкрд╕рдВрджреАрджрд╛ IDE рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, ASP.NET рдХреЛрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░: рд╡реЗрдм рдПрдкреА
рдлреНрд░реЗрдорд╡рд░реНрдХ: netcoreapp 2.2

рд╕рд░реНрд╡рд░ рдкрддреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рдо рдЗрд╕реЗ рдХреЙрд▓рдмреИрдХ рдПрдкреАрдЖрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВред

рдЖрдЗрдП рд╣рдорд╛рд░реЗ ASP.NET рдХреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред
рдпрд╣рд╛рдВ рд╣рдо рдЙрди рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреАред

{ "Config": { "AccessToken": "0bd8573ea40badd694b4da0bbc7d54f52996", "Confirmation" : "b23557a3" }, "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*" }
рдЬрдм рдХреЛрдИ рдШрдЯрдирд╛ рд╕рдореБрджрд╛рдп рдореЗрдВ рдШрдЯрд┐рдд рд╣реЛрддреА рд╣реИ, рддреЛ VKontakte JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдЧрд╛, рдЬреЛ рдЙрд╕ рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореВрд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╣реЛрдЧрд╛ред
рдЖрдиреЗ рд╡рд╛рд▓реЗ JSON рдХреА рд╕рдВрд░рдЪрдирд╛ред { "type":< >, "object":<, >, "group_id":<ID , > }
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
{ "type":"group_join", "object":{ "user_id":1, "join_type":"approved" }, "group_id":1 }
рдЖрдиреЗ рд╡рд╛рд▓реЗ JSON рдХреЛ рдбрд┐рд╕реЗрд░реНрдмрд▓рд╛рдЗрдЬ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдСрдмреНрдЬреЗрдХреНрдЯ (DTO) рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
using System; using Newtonsoft.Json; namespace Cookie.Controllers { [Serializable] public class Updates {
рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CallbackController.cs рдмрдирд╛рдПрдВред
using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; namespace Cookie.Controllers { [Route("api/[controller]")] [ApiController] public class CallbackController : ControllerBase {
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдУрдХреЗ" рдФрд░ HTTP 200 рдХреА рд╕реНрдерд┐рддрд┐ рд╡рд╛рдкрд╕ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╕рд░реНрд╡рд░ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрдИ рдмрд╛рд░ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдХреЙрд▓рдмреИрдХ рдПрдкреАрдЖрдИ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред
рдХреЙрд▓рдмреИрдХ рдПрдкреАрдЖрдИ рддреИрдпрд╛рд░ рд╣реИ!
рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА:
- рдЧрд┐рдердм рдЙрджрд╛рд╣рд░рдг
- JSON рдбреЗрдЯрд╛ рдХреЛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдФрд░ рд╡рд░реНрдгрди рдХрд░рдирд╛
- DI рдЖрдИрдУрд╕реА
- .NET рдХреЛрд░ 2.2 рдХреЗ рд▓рд┐рдП рдПрд╕рдбреАрдХреЗ
рдЕрдзреНрдпрд╛рдп 3. Vk?
C # рдореЗрдВ VK API рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо VkNET рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
Nuget рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрдирд╛:
рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ:
PM> Install-Package VkNet
.NET CLI:
> dotnet add package VkNet
рдпреВрдЖрдИ:

рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА:
- VkNET рдкреНрд░рд▓реЗрдЦрди
рдЕрдзреНрдпрд╛рдп 4. рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛!
рдмреЙрдЯ рдХреЗ рддрд░реНрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕рдореВрд╣ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдИрдУрд╕реА рдХрдВрдЯреЗрдирд░ рдореЗрдВ IVkApi рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред
рдХрдХреНрд╖рд╛ Startup.cs рд╡рд┐рдзрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рд╕реЗрд╡рд╛рдПрдБ ред
using VkNet; using VkNet.Abstractions; using VkNet.Model; services.AddSingleton<IVkApi>(sp => { var api = new VkApi(); api.Authorize(new ApiAuthParams{ AccessToken = Configuration["Config:AccessToken"] }); return api; });
рдЕрдм рдЖрдиреЗ рд╡рд╛рд▓реА рдореИрд╕реЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╣рдорд╛рд░реЗ CallbackController.cs рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред
рд╣рдо IConfiguration рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ IVkApi рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ ред
using VkNet.Abstractions; private readonly IConfiguration _configuration; private readonly IVkApi _vkApi; public CallbackController(IVkApi vkApi, IConfiguration configuration){ _vkApi = vkApi; _configuration = configuration; }
рдФрд░ рдорд╛рдорд▓рд╛ рдЦреБрдж, рдЬреЛ рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдЧрд╛ред рдЗрд╕рдореЗрдВ рд╣рдо рдереЛрдбрд╝рд╛ рддрд░реНрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд░реИрдВрдбрдордЖрдИрдб - рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдПрдкреАрдЖрдИ_рдЖрдИрдбреА рдФрд░ рдкреНрд░реЗрд╖рдХ рдЖрдИрдбреА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ), рдЙрд╕реА рд╕рдВрджреЗрд╢ рдХреЛ рдлрд┐рд░ рд╕реЗ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдВрджреЗрд╢ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдирд┐рд░реНрджрд┐рд╖реНрдЯ RandomId рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреВрд░реЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рд╢реНрд░реЗрдгреА (int32 рддрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
PeerId рдЧрдВрддрд╡реНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред
рдкрд╛рда - рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрджреЗрд╢ рдХрд╛ рдкрд╛рдаред рдЕрдиреБрд▓рдЧреНрдирдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
using VkNet.Model; using VkNet.Model.RequestParams; using VkNet.Utils; case "message_new":{
рдЕрдзреНрдпрд╛рдп 5. рддреИрдирд╛рддреА
рдЕрдм рд╣рдореЗрдВ рдПрдХ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореБрдлреНрдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣рд░реНрдХреЛ рд╣реИ ред
рд╕рд╛рдЗрдЯ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдВрдЧреЗред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ Deploy рдкреЗрдЬ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рд╣рд░реЛрдХреВ рд╕реАрдПрд▓рдЖрдИ рдХреЛ рдЧрд┐рдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ Git рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ CLI рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд░реЛрдХреВ рд╕реАрдПрд▓рдЖрдИ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
рд╣рдо рд╣рд░реЛрдХреВ рдЦрд╛рддреЗ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рддреЗ рд╣реИрдВред
$ heroku login
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВред
$ cd ( )
Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЖрдзрд╛рд░ - рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдПрдХ рдирдИ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
$ git init
рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛) рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
$ heroku git:remote -a ( )
рдмрд┐рд▓реНрдбрдкреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХреЛрдб рдХреЛ рд╕реНрд▓рдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдбрд╛рдпрдиреЛ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
$ heroku buildpacks:set https://github.com/jincod/dotnetcore-buildpack.git -a ( )
рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ (рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рдирд╛) рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
$ git add .
$ git commit -am "cookie"
$ git push heroku master
рдФрд░ рдЪрд▓рд┐рдП рдПрдХ рд╕реАрдЧрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЬрдм рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рд╣рд░реНрдХреЛ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдирд┐рдореНрди рд▓рд┐рдВрдХ рдкрд░ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ https: //**PROJECT_NAME**.herokuapp.com/
рд╣рдо рдЕрдкрдиреЗ рд╕рдореВрд╣ рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдмреИрдХ рдПрдкреАрдЖрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╣рдо рд▓рд┐рдВрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ,
рдХреЙрд▓рдмреИрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдУрд░ рдореБрдбрд╝рдирд╛ ред
https: //**PROJECT_NAME**.herokuapp.com/api/callback

рд╡реАрдХреЗ рдкрддреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ JSON рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдЧрд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧреА: рд╕рд░реНрд╡рд░ рдкрддрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЛ рдирд┐рдЬреА рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗред

рдЕрдЪреНрдЫрд╛ рдХреЛрдбрд┐рдВрдЧ!