[C#][Line] 使用 Line Notify 开发讯息通知机器人 – 开发篇

我使用了自己的开源套件 LexLibrary.Line.NotifyBot,直接从 NuGet 就可以下载安装,节省了许多串接 API 时所需的开发与测试时间,只需安装套件后即可快速开发 Line Notify Bot!!

系列文章:

[C#][Line] 使用 Line Notify 开发讯息通知机器人 – 注册篇[C#][Line] 使用 Line Notify 开发讯息通知机器人 – 开发篇
从 管理登录服务 找到刚刚我们注册的新项目,取得 Client ID 与 Client Secret打开 Startup.cs 找到 ConfigureServices 方法,并在这里新增下列程式码
services.AddLogging();services.AddHttpClient();services.AddLineNotifyBot(new LineNotifyBotSetting{    ClientID = "",    ClientSecret = "",    AuthorizeApi = "https://notify-bot.line.me/oauth/authorize",    TokenApi = "https://notify-bot.line.me/oauth/token",    NotifyApi = "https://notify-api.line.me/api/notify",    StatusApi = "https://notify-api.line.me/api/status",    RevokeApi = "https://notify-api.line.me/api/revoke"});
接着需要使用 Client Redirect 的方式让使用者登入 Line 并授权给系统权限,我已经在套件里面封装好方法了,只要使用 LineNotifyBotApi.GenerateAuthorizeUrl 即可取得 Redirect Url。
string callBackUrl = string.Format("{0}://{1}{2}", Request.Scheme, Request.Host, Url.Action("CallBack"));string clientAuthorizeUrl = _lineNotifyBotApi.GenerateAuthorizeUrl(callBackUrl, "1234");

1234 这个参数可以拿来做 XSS 验证避免被攻击
4. 使用者授权完后 Line 会 CallBack 到上面定义好的网址,可以用 AuthorizeCallbackDTO 这个物件接收参数

public IActionResult CallBack(AuthorizeCallbackDTO callbackDTO){    // 可能是第三方攻击    if (callbackDTO.State != "1234")    {        return new UnauthorizedResult();    }    return RedirectToAction("Index", new { callbackDTO.Code });}
利用 AuthorizeCallbackDTO.Code 的值去呼叫 LineNotifyBotApi.Token,可以取得发送讯息给使用者的 AccessToken
var apiResult = await _lineNotifyBotApi.Token(new TokenRequestDTO{    Code = code,    RedirectUri = callBackUrl});ViewBag.AccessToken = apiResult.Access_Token;
取得 AccessToken 后就可以呼叫 LineNotifyBotApi.Notify 发送讯息给使用者啰!
var apiResult = await _lineNotifyBotApi.Notify(new NotifyRequestDTO{    AccessToken = accessToken,    Message = message});ViewBag.ResultJson = JsonConvert.SerializeObject(apiResult, Formatting.Indented);


7. 我有写一个简单的範例放到 GitHub 供给大家参考,有问题欢迎在下方留言给我。

文件:LINE Notify API Document範例程式:https://github.com/shuangrain/LexLibrary.Line.NotifyBot.Sample

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章