Sử dụng OAuth với Facebook

Bài dưới đây hướng dẫn chúng ta các bước để tích hợp OAuth với Facebook, hướng dẫn gồm 2 phần:

  • Phần 1: Tạo facebook app để lấy ID và Secret
  • Phần 2: Thiết lập trong mã nguồn để tích hợp OAuth

Phần 1 – Tạo Facebook Apps

  • Truy cập địa chỉ https://developers.facebook.com/apps để tạo facebook apps

00

  • Click nút Add a New App > nhập thông tin như sau để tạo CApp

01

  • Click nút Create App ID để kết thúc tạo App
  • Sau khi tạo App, chọn Settings

fbapp04

  • Cửa sổ Settings hiện ra, chọn Add Platform

fbapp05

  • Chọn Website

fbapp06

  • Trong phần Site URL, nhập vào địa chỉ web

fbapp07

  • Click Save Changes để kết thúc phần tạo App

Phần 2 – Thiết lập trong mã nguồn web

Trong hình trên, chọn mục Show, bạn sẽ có được 2 giá trị đó là App ID App Secret

Copy 2 giá trị đó và thiết lập trong Startup.Auth.cs, tìm đến phần app.UseFacebookAuthentication, bỏ comment phần app.UseFacebookAuthentication và thiết lập 2 giá trị App ID và App Secret tương ứng.

Kết quả sau khi thiết lập giá trị App ID và App Secret như dưới đây

app.UseFacebookAuthentication(
  appId: "227282464333266",
  appSecret: "cbbaaca02b2c703e566ccdefb61d2177"); 

Lưu ứng dụng và nhấn tổ hợp Ctrl + F5 để kiểm tra kết quả

fb

Giao diện trang login bây giờ có thêm mục Facebook

Routing để sử dụng nhiều get methods trong ASP.NET WEB API

Làm thế nào để sử dụng nhiều phương thức GET trong Web API?

Ví dụ:

public class TestController : ApiController
{
     public Student GetStudentById(int id)
     {
     }

     public Teacher GetTeacherById(int id)
     {
     }
}

Khi chạy dịch vụ, để gọi phương thức của API ta phải dùng

http://mydomain/api/Test/1

Như vậy ở đây GetTeacherById được gọi hay GetStudentById được gọi? Để giải quyết vấn đề này, thuộc tính Route sẽ giúp chúng ta giải quyết

public class TestController : ApiController
{
     [Route("Student/Test/{id}")]
     public Student GetStudentById(int id) { .... }
     [Route("Teacher/Test/{id}")]
     public Teacher GetTeacherById(int id)
     {

     }
}

Với cách này, chúng ta có 2 URL phân biệt để gọi 2 phương thức khác nhau

 

Hướng dẫn xây dựng WCF Services

Tạo dự án mới, chọn WCF Server Application

cc

Tạo ServiceContract (Interface trong C#)

IbankService.cs

namespace WcfBankService

{

[ServiceContract]

public interface IBankService

{

[OperationContract]

bool Register(string accId, string name, float balance, string pin);

[OperationContract]

bool ValidateAccount(string accId, string pin);

[OperationContract]

bool WithDraw(string accId,float balance);

[OperationContract]

bool Deposit(string accId,float balance);

[OperationContract]

float ViewBalance(string accId);

}

}

Tạo BankService.cs implement IBankService

namespace WcfBankService

{

public class BankService : IBankService

{

public bool Register(string accId, string name, float balance, string pin)

{

//Viet code them mot hang account

return true;

}

public bool ValidateAccount(string accId, string pin)

{

//Login – Check ID & PIN

return true;

}

public bool WithDraw(string accId, float amount)

{

//Rut tien

//Update Accounts set Balance = Balance-amount

return true;

}

public bool Deposit(string accId, float amt)

{

//Bo tien vao

//Update Accounts set Balance = Balanece + amt

return true;

}

public float ViewBalance(string accId)

{

float balance = 0;

//Kiem tra so du cua tai khoan accit

return balance;

}

}

Giao diện các class sau khi hoàn thiện

21

 

 

Khắc phục lỗi Chrome Cast

Khi sử dụng trình duyệt Chrome gặp phải lỗi Chrome cast, lỗi nhìn thấy khi bạn nhấn F12 hoặc sử dụng chức năng Inspect element

Failed to load resource: net::ERR_ADDRESS_UNREACHABLE chrome-extension://boadgeojelhgndaghljhdicfkmllpafd/cast_sender.js
Failed to load resource: net::ERR_ADDRESS_UNREACHABLE chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm/cast_sender.js
Failed to load resource: net::ERR_ADDRESS_UNREACHABLE chrome-extension://hfaagokkkhdbgiakmmlclaapfelnkoah/cast_sender.js

Để khắc phục lỗi này, bạn chỉ cần cài Chromecast extension là tránh được những thông báo lỗi phiền phức đó bằng cách vào liên kết sau Install chrome cast extension

Capture

Click Add to chrome góc trên bên phải để cài đặt Extension này, lỗi sẽ được khắc phục sau khi cài đặt thành công.

 

 

Sử dụng trigger (2)

Bài trước chúng ta đã đề cập về cú pháp và cách sử dụng Trigger, bài này ứng dụng trigger vào vấn đề tự động hóa một số tác vụ của hệ thống.

Nếu bạn chưa biết cú pháp sử dụng trigger, tham khảo bài viết này trước khi đọc tiếp bài viết này Trigger và cách sử dụng

Bài toán thực tế đặt ra như sau:

Hệ thống quản lý thư viện có các bảng trong đó có bảng Sách để quản lý số sách có trong thư viện, cấu trúc của bảng sách gồm các trường

Sach
ID (Char(10))
Tieude
Tacgia
Tomtat
Soluong

Bảng mượn trả để theo dõi thành viên mượn và trả sách, cấu trúc các trường của bảng MuonTra

MuonTra
Id
ThanhVienID
SachId
NgayMuon
NgayTra

Nghiệp vụ bài toán được cho là, khi một người mượn sách, một bản ghi được thêm vào bảng mượn trả và số sách giảm 1 cuốn. Khi trả sách, số lượng của cuốn sách đó tăng thêm 1 và khi trả sách, thủ thư chỉ cần cập nhật trường ngày trả của hàng tương ứng với việc mượn trả sách

Bây giờ chúng ta cài đặt trigger để tự động hóa việc tăng hoặc giảm số lượng khi cho mượn hoặc nhận lại sách

Trigger 1 – Giảm số lượng sách khi cho mượn

Create trigger InsTrigger on MuonTra

FOR INSERT

As

Declare @bookCode char(10)

select @bookCode = Id from inserted

update Sach set Soluong = Soluong – 1 where Id = @bookCode

Trigger 2- tăng số lượng sách khi nhận lại sách

Create trigger UpdTrigger on MuonTra

FOR Update

As

Declare @bookcode char(10)

select @bookcode = Id from inserted

update Sach set Soluong = Soluong + 1 where Id = @bookcode

Trigger và cách sử dụng

Trigger là gì?

Về bản chất, trigger là một đối tượng của SQL Server, giống như stored procedures hoặc function nhưng điểm KHÁC là trigger được tự động thực hiện mỗi khi có các thao tác dữ liệu trên bảng hoặc đối tượng mà chúng ta cài đặt Trigger.

Trigger sử dụng vào mục đích gì?

Khi nói đến ràng buộc dữ liệu (constraints), chúng ta thường được đề cập các loại ràng buộc sau:

  • Primary key – Khóa chính
  • Foreign key – khóa ngoại
  • Unique key – duy nhất (không trùng lặp giá trị)
  • Not null – không được phép để rỗng
  • Default – giá trị mặc định
  • Check – ràng buộc kiểm tra
  • Trigger – trigger

Với các ràng buộc dữ liệu phức tạp, không cài đặt được với các loại ràng buộc trên, chúng ta sử dụng loại ràng buộc này – trigger.

Bên cạnh đó, trigger còn được dùng tự động lưu nhật ký các thao tác dữ liệu xảy ra. Ví dụ, khi giao dịch ngân hàng, một phát sinh giao dịch xảy ra có thể lưu nhật ký TỰ ĐỘNG bằng trigger thực hiện một cách đơn giản.

Bảng Inserted, deleted

Khi trigger xảy ra, SQL Server sử dụng 2 bảng này để phục vụ cho công việc mà trigger đảm trách, chức năng của từng bảng như sau

Thao tác dữ liệu Inserted Deleted
INSERT Dữ liệu thêm mới được lưu vào bảng này Không sử dụng
DELETE Không sử dụng Dữ liệu sẽ xóa được lưu vào bảng này
UPDATE Dữ liệu mới sẽ thay đổi Dữ liệu cũ trước khi thay đổi

Cú pháp

CREATE TRIGGER Trigger_name
ON table_name
FOR [DELETE, INSERT, UPDATE]
AS

Sql_statements

Giải thích

Trigger có tên Trigger_name được tạo ra trên bảng table_name và trigger được gọi (chạy) khi có thao tác DELETE, INSERT, UPDATE trên bảng đó

Ví dụ 1

CREATE TRIGGER CheckDiscountUpd

ON Products

FOR UPDATE AS

IF (SELECT discount FROM inserted) > (select max(Maxdisc) from discounts)

BEGIN

PRINT ‘You cannot assign a discount greater than max allowed discount’

ROLLBACK TRANSACTION

END

Giải thích ví dụ

Giả sử ràng, bảng Products có trường discount, khi cập nhật giá trị discount thì hệ thống kiểm tra xem giá trị discount có nằm trong phạm vi cho phép hay không? Nếu vượt quá thì hủy việc thay đổi đó.

Ví dụ 2: bạn không được phép thay đổi giá trị của trường payments trong bảng sales

CREATE TRIGGER NoUpdatePayterms

ON sales

FOR UPDATE AS

IF UPDATE (payterms)

BEGIN

PRINT ‘You cannot modify the payment terms for an order’

ROLLBACK TRANSACTION

END

Bài tiếp theo sẽ giải thích loại ràng buộc phức tạp không thiết lập được bằng các loại ràng buộc khác mà phải sử dụng ràng buộc loại này – Trigger

Hướng dẫn sử dụng Package Manager Console

Hướng dẫn dưới đây giúp bạn nắm được các cú pháp lệnh với Package Manage Console, nắm vững cú pháp giúp chúng ta lập trình nhanh hơn

  • Từ menu Tools, chọn Library Package Manager > Package Manager Console.

01-package-manager-console-in-menu

  • Cửa sổ Package Manager Console hiển thị

02-package-manager-console-empty-window

  • Các lệnh sử dụng để hiển thị, cài đặt, cập nhật và gỡ bỏ thư viện như sau
Lệnh Mô tả
Get-Package -ListAvailable

hoặc

Get-Package

Hiển thị các gói/thư viện cài đặt trong dự án
Get-Package -Filter Logging -ListAvailable Hiển thị các gói/thư viện có tên Logging
Install-Package EntityFramework Cài đặt thư viện EntityFramework
Uninstall-Package EntityFramework Remove thư viện EntityFramework
Get-Package -updates Cập nhật tất cả các thư viện cài đặt trong dự án
Update-Package Jquery Cập nhật thư viện Jquery

Một số thư viện khi cài đặt vào sẽ có thêm các lệnh riêng, ví dụ dưới đây chúng ta cài thêm thư viện MvcScaffolding và sau đó có thể dùng các lệnh của thư viện này

5