1
00:00:00,000 --> 00:00:04,557
[MUSIC]

2
00:00:04,557 --> 00:00:10,906
Bây giờ chúng ta đã hiểu về OAuth 2 và cách Facebook hỗ trợ OAuth 2, chúng ta

3
00:00:10,906 --> 00:00:16,870
hãy chuyển sang bài tập này, nơi chúng tôi sẽ cấu hình

4
00:00:16,870 --> 00:00:23,460
ứng dụng máy chủ nhanh của chúng tôi để sử dụng Facebook như nhà cung cấp OAuth 2 cho máy chủ của chúng tôi.

5
00:00:23,460 --> 00:00:26,820
Và đồng thời cho ứng dụng khách hàng của chúng tôi.

6
00:00:26,820 --> 00:00:30,500
Trong bài tập này, chúng tôi sẽ dựa vào hộ chiếu mà

7
00:00:30,500 --> 00:00:34,730
chúng tôi đã cấu hình trong ứng dụng nhanh của chúng tôi.

8
00:00:34,730 --> 00:00:39,890
Chúng tôi sẽ cấu hình một chiến lược mới để xác thực với Facebook

9
00:00:39,890 --> 00:00:43,600
bằng cách sử dụng đó hộ chiếu Facebook token module.

10
00:00:45,680 --> 00:00:51,629
Để bắt đầu bài tập này,

11
00:00:51,629 --> 00:01:01,590
hãy truy cập https//developers.facebook.com/apps.

12
00:01:01,590 --> 00:01:07,640
Bây giờ, đây là nơi bạn sẽ đăng ký ứng dụng khách hàng, về cơ bản là

13
00:01:07,640 --> 00:01:13,280
máy chủ của bạn, máy chủ bổ sung, hoạt động như ứng dụng khách hàng cho Facebook.

14
00:01:13,280 --> 00:01:16,380
Và sau đó chúng tôi sẽ đăng ký một ứng dụng khách hàng ở đó.

15
00:01:16,380 --> 00:01:21,250
Và sau đó nhận được giữ của một ID ứng dụng và một bí mật ứng dụng từ Facebook.

16
00:01:21,250 --> 00:01:24,950
Bây giờ rõ ràng nó đi mà không nói rằng bạn cần phải có một tài khoản Facebook

17
00:01:24,950 --> 00:01:27,160
để có thể cấu hình này.

18
00:01:27,160 --> 00:01:32,520
Nếu bạn không có tài khoản Facebook và bạn không muốn thực hiện bài tập này,

19
00:01:32,520 --> 00:01:36,220
thì không có hại gì trong việc không thực hiện bài tập này.

20
00:01:36,220 --> 00:01:39,110
Nhưng tất nhiên để thực hiện bài tập OAuth 2 này,

21
00:01:39,110 --> 00:01:45,210
bạn cần một tài khoản Facebook để cấu hình nhà cung cấp OAuth của bạn trên Facebook.

22
00:01:45,210 --> 00:01:47,390
Vì vậy, đi đến trang web này,

23
00:01:47,390 --> 00:01:52,510
Developers.facebook.com/apps, bạn sẽ nhận thấy rằng bạn sẽ cần phải

24
00:01:52,510 --> 00:01:57,970
đăng nhập để tiếp tục nếu bạn không đăng nhập từ trình duyệt của bạn.

25
00:01:57,970 --> 00:02:01,790
Bây giờ bạn có thể thấy rằng tôi đã cấu hình một vài ứng dụng ở đây và

26
00:02:01,790 --> 00:02:03,170
thử nghiệm chúng ra.

27
00:02:03,170 --> 00:02:07,990
Bây giờ, để tạo một ứng dụng mới, nhấp vào Add New App.

28
00:02:07,990 --> 00:02:13,140
Và sau đó bạn có thể cung cấp tên cho ứng dụng của bạn.

29
00:02:13,140 --> 00:02:20,990
Vì vậy, tôi có thể nói Confusion3, và sau đó chúng tôi có thể cung cấp email liên lạc.

30
00:02:20,990 --> 00:02:26,336
Và sau đó làm theo quy trình để tạo ứng dụng mới của bạn ở đây.

31
00:02:36,108 --> 00:02:40,925
Và một khi ứng dụng được tạo ra, bạn sẽ ngay lập tức nhận thấy rằng

32
00:02:40,925 --> 00:02:45,290
có một ID ứng dụng đã được tạo cho ứng dụng của bạn.

33
00:02:45,290 --> 00:02:47,180
Và sau đó cho ứng dụng đặc biệt này.

34
00:02:47,180 --> 00:02:50,680
Vì vậy, nếu bạn đang đi đến bảng điều khiển, bạn sẽ thấy

35
00:02:51,840 --> 00:02:56,640
hai mẩu thông tin mà bạn thực sự yêu cầu để tiếp tục.

36
00:02:56,640 --> 00:03:01,850
Một là App ID, vì vậy hãy đảm bảo rằng bạn tạo một bản sao của App ID.

37
00:03:01,850 --> 00:03:03,810
Và thứ hai là bí mật ứng dụng.

38
00:03:03,810 --> 00:03:10,320
Vì vậy, bạn có thể gõ vào nút hiển thị ở đây và sau đó bạn sẽ nhận được bí mật ứng dụng.

39
00:03:10,320 --> 00:03:14,350
Bí mật ở đây để bạn có thể thấy hai là không có gì ngoài chuỗi ASCII.

40
00:03:14,350 --> 00:03:18,980
Vì vậy, làm cho một bản sao của điều này bởi vì bạn cần phải cấu hình máy chủ chuyên gia

41
00:03:18,980 --> 00:03:23,200
của bạn và cũng ứng dụng khách hàng của bạn với hai phần thông tin này.

42
00:03:23,200 --> 00:03:25,870
Và một khi bạn nắm được điều đó,

43
00:03:25,870 --> 00:03:29,105
chúng ta có thể tiến hành phần còn lại của bài tập.

44
00:03:29,105 --> 00:03:33,500
Bạn sẽ cần phải đi đến bảng điều khiển của bạn về ứng dụng của bạn.

45
00:03:33,500 --> 00:03:38,890
Và trong cài đặt, như bạn thấy, trong cài đặt cơ bản ở đây

46
00:03:38,890 --> 00:03:43,310
bạn chỉ cần thêm một nền tảng trang web ở đây.

47
00:03:43,310 --> 00:03:52,650
Và sau đó cung cấp URL dưới dạng https//localhost3443.

48
00:03:52,650 --> 00:03:58,168
Và lưu các thay đổi ở đây vào ứng dụng của bạn ở đây.

49
00:03:58,168 --> 00:04:03,910
Sau khi thêm vào trang web ở đây, hãy chuyển đến cài đặt nâng cao.

50
00:04:03,910 --> 00:04:09,000
Và sau đó nhấp vào Có để nói

51
00:04:09,000 --> 00:04:14,400
ứng dụng gốc hoặc máy tính để bàn ở đây và nói có với điều đó và sau đó lưu các thay đổi.

52
00:04:15,590 --> 00:04:20,461
Và trong cài đặt cơ bản trong miền ứng dụng,

53
00:04:20,461 --> 00:04:28,339
hãy nhập https://localhost:3443 và lưu các thay đổi.

54
00:04:29,640 --> 00:04:33,520
Tiếp theo, đi đến hướng dẫn tập thể dục cho bài tập này.

55
00:04:33,520 --> 00:04:36,580
Và bạn sẽ thấy rằng có một tập tin index.html mà

56
00:04:36,580 --> 00:04:39,540
tôi đã cung cấp trong các tài nguyên tập thể dục.

57
00:04:39,540 --> 00:04:47,270
Tải xuống tệp index.html này, và sau đó di chuyển nó vào thư mục công cộng của bạn.

58
00:04:47,270 --> 00:04:49,941
Vì vậy, chúng ta hãy tải về tập tin index.html này.

59
00:04:57,932 --> 00:05:05,548
Tiếp theo, vào thư mục ConfusionServer trong thư mục công cộng,

60
00:05:05,548 --> 00:05:11,125
bạn thấy rằng tôi đã có một tệp index.html.

61
00:05:11,125 --> 00:05:16,039
Tôi sẽ thay thế điều này bằng tệp index.html đã tải xuống

62
00:05:16,039 --> 00:05:17,774
mà tôi vừa thu được.

63
00:05:17,774 --> 00:05:20,502
Tôi đã lưu điều này trên máy tính để bàn của tôi.

64
00:05:20,502 --> 00:05:23,173
Vì vậy, tôi chỉ cần kéo index.html này và

65
00:05:23,173 --> 00:05:27,771
sau đó thay thế các tập tin index.html trong thư mục công cộng của tôi ConfusionServer.

66
00:05:27,771 --> 00:05:31,227
Tiếp theo, đi đến trình soạn thảo, hãy mở tệp index.html.

67
00:05:31,227 --> 00:05:34,584
Và nếu bạn mở nó, bạn sẽ thấy rằng tôi đã cấu hình một số

68
00:05:34,584 --> 00:05:35,112
mã JavaScript ở đây.

69
00:05:35,112 --> 00:05:39,850
Mã JavaScript này tôi có giữ từ Facebook nơi họ

70
00:05:39,850 --> 00:05:44,790
chỉ định làm thế nào bạn có thể cấu hình một ứng dụng Dev bằng cách sử dụng này.

71
00:05:44,790 --> 00:05:51,030
Vì vậy, tôi đã sao chép điều này từ hướng dẫn Facebook.

72
00:05:51,030 --> 00:05:55,470
Đặc biệt bạn sẽ nhận thấy rằng trong tập tin index.html này,

73
00:05:55,470 --> 00:05:58,735
có trường AppID này ở đây.

74
00:05:58,735 --> 00:06:04,400
Bạn sẽ được thay thế trường AppID này với

75
00:06:04,400 --> 00:06:09,060
ID khách hàng mà bạn thu được bằng cách đăng ký ứng dụng của bạn trên Facebook.

76
00:06:09,060 --> 00:06:13,130
Vì vậy, ở đây, tôi đang thay thế Id của khách hàng này

77
00:06:13,130 --> 00:06:18,430
với Id của ứng dụng của tôi mà tôi đã đăng ký trên Facebook ở đây.

78
00:06:18,430 --> 00:06:22,957
Và bạn cần thực hiện cùng một bước với ứng dụng

79
00:06:22,957 --> 00:06:27,750
mà bạn đăng ký trên Facebook, với ID ứng dụng mà bạn nhận được từ Facebook.

80
00:06:27,750 --> 00:06:30,812
Và sau đó lưu các thay đổi vào index.html.

81
00:06:30,812 --> 00:06:36,980
Trang index.html này mà tôi có ở đây sẽ tạo ra

82
00:06:36,980 --> 00:06:42,290
một nút đăng nhập trên trang index.html, mà khi nhấp vào sẽ

83
00:06:42,290 --> 00:06:47,580
giúp chúng tôi đăng nhập vào Facebook và sau đó có được một mã thông báo truy cập từ Facebook.

84
00:06:48,660 --> 00:06:51,260
Tiếp theo, đi đến thư mục ConfusionServer,

85
00:06:51,260 --> 00:06:55,280
chúng tôi sẽ cài đặt mô-đun nút token Facebook hộ chiếu.

86
00:06:55,280 --> 00:06:58,494
Vì vậy, tại dấu nhắc loại npm cài đặt

87
00:07:00,200 --> 00:07:05,003
Passport-facebook-token và

88
00:07:05,003 --> 00:07:09,730
cài đặt mô-đun nút này.

89
00:07:09,730 --> 00:07:17,000
Và như bạn có thể thấy tôi đang sử dụng phiên bản 3.3.0 trong khóa học này.

90
00:07:17,000 --> 00:07:20,446
Quay trở lại trình soạn thảo, mở config.js.

91
00:07:20,446 --> 00:07:25,162
Và trong config.js tôi sẽ thêm vào

92
00:07:25,162 --> 00:07:34,440
một tài sản được gọi là 'facebook' vào tập tin config.js của tôi.

93
00:07:34,440 --> 00:07:39,221
Và bên trong đây, tôi sẽ

94
00:07:39,221 --> 00:07:44,481
cấu hình ClientID của tôi và

95
00:07:44,481 --> 00:07:48,560
ClientSecret.

96
00:07:48,560 --> 00:07:54,150
Bây giờ, ClientID sẽ chính xác những gì bạn có được từ Facebook.

97
00:07:54,150 --> 00:08:00,304
Ở đây, và bí mật của khách hàng như bạn đã thấy khi bạn đăng ký ứng dụng của bạn.

98
00:08:02,198 --> 00:08:05,221
Bạn nhận được một chuỗi thứ hai ở đó để sao chép chuỗi đó và

99
00:08:05,221 --> 00:08:07,764
sau đó dán nó vào ClientSecret ở đây.

100
00:08:07,764 --> 00:08:13,790
Bây giờ hãy chắc chắn rằng điều này được dán dưới dạng một chuỗi ở đây.

101
00:08:13,790 --> 00:08:19,090
Tương tự như vậy, dán trong ClientSecret vào tệp config.js của tôi.

102
00:08:19,090 --> 00:08:26,360
Vì vậy, cấu hình này ở đây sẽ giúp tôi sử dụng hai nơi tôi cần trong mã của tôi.

103
00:08:26,360 --> 00:08:29,790
Tiếp theo, như chúng tôi nhận ra, bất cứ khi nào người dùng

104
00:08:32,390 --> 00:08:37,770
đăng nhập và sau đó có được mã thông báo truy cập và chuyển nó vào máy chủ express của chúng tôi.

105
00:08:37,770 --> 00:08:41,160
Các máy chủ nhanh sẽ sử dụng mã thông báo truy cập đó và đi và

106
00:08:41,160 --> 00:08:47,840
lấy các thông tin tập tin từ máy chủ Facebook 0 ought.

107
00:08:47,840 --> 00:08:52,380
Và sau đó, một khi nó đạt được thông tin hồ sơ, sau đó máy chủ nhanh của chúng tôi sẽ

108
00:08:52,380 --> 00:08:57,980
tạo một tài khoản người dùng mới vào ứng dụng của chúng tôi.

109
00:08:57,980 --> 00:09:01,750
Và sử dụng ID Facebook làm chỉ mục vào tài khoản sử dụng này.

110
00:09:01,750 --> 00:09:03,630
Vì vậy, để thích ứng với điều này,

111
00:09:03,630 --> 00:09:08,467
chúng tôi sẽ đi vào các tập tin user.js nơi chúng tôi đã xác định mô hình của chúng tôi.

112
00:09:08,467 --> 00:09:12,854
Vì vậy, ngoài tên đầu tiên và họ,

113
00:09:12,854 --> 00:09:17,241
tôi cũng sẽ thêm vào một lĩnh vực ở đây được gọi là FaceBookID,

114
00:09:17,241 --> 00:09:20,510
đó là loại String ở đây.

115
00:09:20,510 --> 00:09:24,548
FaceBookID sẽ lưu trữ FaceBookID

116
00:09:24,548 --> 00:09:28,700
của người dùng đã thông qua trong mã thông báo truy cập.

117
00:09:29,760 --> 00:09:34,002
Trong bước tiếp theo, tôi sẽ chỉ cho bạn cách cấu hình này.

118
00:09:34,002 --> 00:09:40,260
Sau đó, chúng tôi cấu hình chiến lược Facebook của chúng tôi bằng cách sử dụng thẻ Facebook hộ chiếu..

119
00:09:40,260 --> 00:09:43,640
Khi một người dùng vượt qua mã thông báo truy cập,

120
00:09:43,640 --> 00:09:47,230
sau đó bạn sẽ được lấy hồ sơ và sau đó thiết lập một tài khoản cho

121
00:09:47,230 --> 00:09:52,160
người dùng đó trong máy chủ địa phương của chúng tôi ở đây, trong máy chủ nhanh của chúng tôi ở đây.

122
00:09:52,160 --> 00:09:56,410
Chúng tôi sẽ khởi tạo tên và họ và FaceBookID.

123
00:09:56,410 --> 00:10:01,760
Nhưng tất nhiên tài khoản cụ thể này sẽ không có mật khẩu hoặc

124
00:10:01,760 --> 00:10:04,140
đúng hơn là băm được cài đặt liên quan đến điều này.

125
00:10:04,140 --> 00:10:09,150
Bởi vì, nếu một người dùng làm cho đăng nhập bằng tài khoản này sau đó họ sẽ phải sử dụng

126
00:10:09,150 --> 00:10:14,400
phần đăng nhập Facebook của họ để đăng nhập vào ứng dụng của chúng tôi.

127
00:10:14,400 --> 00:10:18,330
Tiếp theo chúng ta sẽ đi để xác thực tập tin dark.js.

128
00:10:18,330 --> 00:10:23,138
Vì vậy, nơi chúng tôi đã thiết lập tất cả các

129
00:10:23,138 --> 00:10:25,507
chiến lược chứng thực hộ chiếu khác nhau của chúng tôi.

130
00:10:25,507 --> 00:10:30,880
Vì vậy, ở đây ngoài chiến lược jwt và chiến

131
00:10:30,880 --> 00:10:37,175
lược địa phương mà tôi đã cấu hình ở đây,

132
00:10:37,175 --> 00:10:43,176
hãy để tôi tạo ra một FacebookTokenStrategy ở đây.

133
00:10:43,176 --> 00:10:49,965
Và sau đó thiết lập yêu cầu mật khẩu-facebook-token.

134
00:10:52,494 --> 00:10:56,561
Và điều này sẽ cho chúng ta một chiến lược mới mà chúng ta có thể

135
00:10:56,561 --> 00:11:00,530
cấu hình trong mô-đun hộ chiếu của chúng tôi ở đây.

136
00:11:00,530 --> 00:11:04,573
Vì vậy, đi xuống vào mã ở đây, ngay

137
00:11:04,573 --> 00:11:07,761
tại đó, ở phần cuối của tập tin này, tôi sẽ tạo ra,

138
00:11:12,878 --> 00:11:17,055
FacebookPassport như

139
00:11:17,055 --> 00:11:21,697
passsport.use ().

140
00:11:21,697 --> 00:11:28,380
Và vì vậy đây là nơi tôi sẽ chỉ định FaceBookTokenStrategy mới ở đây.

141
00:11:29,610 --> 00:11:33,730
Và sau đó chúng tôi sẽ chỉ định các chi tiết của

142
00:11:33,730 --> 00:11:38,886
FaceBookTokenStrategy này, ngay tại thời điểm này ở đây.

143
00:11:38,886 --> 00:11:45,280
Vì vậy, trong FacebookTokenStrategy này, làm thế nào để chúng ta tiếp cận vấn đề này?

144
00:11:45,280 --> 00:11:51,910
Hãy để tôi chỉ quấn quanh từ bọc để bạn có thể thấy mã hoàn chỉnh.

145
00:11:51,910 --> 00:11:59,300
Vì vậy, đối với FaceBookTokenStrategy, chúng tôi sẽ bắt đầu bằng cách nói đầu tiên.

146
00:11:59,300 --> 00:12:04,794
Phần đầu tiên của FaceBookTokenStrategy mất ClientID.

147
00:12:08,542 --> 00:12:17,406
Mà chúng tôi có cấu hình tại Config.facebook.Clientid đây,

148
00:12:17,406 --> 00:12:22,302
và khách hàng, bí mật,

149
00:12:22,302 --> 00:12:30,340
mà chúng tôi cũng đã cấu hình trong, tập tin cấu hình của chúng tôi ở đây.

150
00:12:30,340 --> 00:12:38,235
Vì vậy, chúng tôi sẽ cung cấp điều này như là tham số đầu tiên cho chiến lược này ở đây.

151
00:12:38,235 --> 00:12:43,985
Và sau đó tham số thứ hai, là nơi bất chấp

152
00:12:43,985 --> 00:12:48,145
chức năng gọi lại mà đi vào tại thời điểm này.

153
00:12:48,145 --> 00:12:53,015
Vì vậy, hàm callback ở đây được ba giá trị.

154
00:12:53,015 --> 00:12:57,100
Vì vậy, nó được AccessToken, R

155
00:12:59,672 --> 00:13:04,584
efreshToken, hồ sơ, và

156
00:13:04,584 --> 00:13:07,760
gọi lại gọi là như đã thực hiện ở đây.

157
00:13:07,760 --> 00:13:12,047
Vì vậy, đây là bốn tham số đi vào hàm callback mà chúng ta sẽ

158
00:13:12,047 --> 00:13:13,447
cấu hình tại thời điểm này.

159
00:13:13,447 --> 00:13:18,660
Vì vậy, hãy để tôi thụt lề mã đó trong để nó là một chút rõ ràng hơn để xem.

160
00:13:18,660 --> 00:13:25,592
Và bên trong chức năng gọi lại này mà tôi cấu hình ở đây,

161
00:13:25,592 --> 00:13:30,150
tôi sẽ đầu tiên nói user.Findone.

162
00:13:30,150 --> 00:13:35,430
Vì vậy, chúng tôi sẽ cố gắng để xem nếu người dùng Facebook đặc biệt này

163
00:13:35,430 --> 00:13:40,470
đã đăng nhập trước đó để tài khoản đã

164
00:13:40,470 --> 00:13:46,381
được cấu hình, Với FaceBookID.

165
00:13:46,381 --> 00:13:49,051
Bây giờ chúng ta có được FaceBookID ở đâu?

166
00:13:49,051 --> 00:13:55,160
Chú ý rằng chúng tôi đang nhận được hồ sơ đó cho người dùng,

167
00:13:55,160 --> 00:13:59,630
đến đây, vì vậy bạn có thể thấy rằng hồ sơ này đang đến như một tham số.

168
00:13:59,630 --> 00:14:04,208
Hồ sơ này sẽ mang theo rất nhiều thông tin đến từ Facebook mà chúng tôi

169
00:14:04,208 --> 00:14:06,319
có thể sử dụng trong ứng dụng của chúng tôi.

170
00:14:06,319 --> 00:14:13,326
AccessToken, tất nhiên, được cung cấp cho máy chủ bởi người dùng.

171
00:14:13,326 --> 00:14:20,870
Vì vậy,

172
00:14:20,870 --> 00:14:26,200
nếu người dùng này tồn tại sau đó chúng tôi đã tìm thấy rằng người dùng trước đó đã

173
00:14:26,200 --> 00:14:30,550
đăng nhập vào tài khoản của chúng tôi bằng cách sử dụng cách tiếp cận Facebook.

174
00:14:30,550 --> 00:14:37,078
Vì vậy, trong trường hợp này chúng ta có thể tiến hành nếu không chúng ta sẽ tạo ra một người dùng mới.

175
00:14:37,078 --> 00:14:42,416
Vì vậy, chức năng gọi lại ở đây sẽ có hai tham số,

176
00:14:42,416 --> 00:14:44,557
err và người dùng ở đây.

177
00:14:49,621 --> 00:14:55,298
Và chức năng gọi lại này như chúng ta sẽ thấy,

178
00:14:55,298 --> 00:15:01,800
tốt bên trong đây chúng ta sẽ kiểm tra để xem nếu (err).

179
00:15:01,800 --> 00:15:07,072
Vì vậy, nếu điều này gây ra một lỗi, sau đó tất nhiên

180
00:15:07,072 --> 00:15:13,408
những gì chúng ta cần làm là trả lại xong (err, false).

181
00:15:15,694 --> 00:15:20,663
Vì vậy, điều này thực hiện như bạn có thể thấy là hàm callback đó là đến như

182
00:15:20,663 --> 00:15:23,577
tham số để chức năng này ở đây, vì vậy

183
00:15:23,577 --> 00:15:26,770
chúng tôi sẽ gọi các done với err và false.

184
00:15:26,770 --> 00:15:31,830
Nếu nó không phải là một lỗi sau đó

185
00:15:31,830 --> 00:15:36,384
chúng ta sẽ nói nếu (! err

186
00:15:36,384 --> 00:15:41,950
&& người dùng! == null).

187
00:15:43,170 --> 00:15:47,880
Vì vậy, nếu người dùng không phải là null, vì vậy điều đó có nghĩa là chúng tôi đã tìm thấy một người dùng trong hệ thống

188
00:15:47,880 --> 00:15:52,610
mà đã không được trước đó với FaceBookID cụ thể, Vì vậy, đối với người dùng,

189
00:15:52,610 --> 00:15:59,750
tất cả những gì chúng ta cần làm là trở lại thực hiện (null,) vì

190
00:15:59,750 --> 00:16:05,100
không có lỗi ở đây, và sau đó chúng tôi sẽ trả lại giá trị người dùng cho điều này xuống đây.

191
00:16:05,100 --> 00:16:08,560
Vì vậy, điều đó có nghĩa là nếu người dùng đã đăng nhập trước đó bằng

192
00:16:08,560 --> 00:16:13,350
cách sử dụng cách tiếp cận Facebook, thì người dùng sẽ đã được tạo ra.

193
00:16:13,350 --> 00:16:17,730
Và như vậy, người dùng đó sẽ được tìm thấy và sau đó chúng tôi chỉ cần vượt qua lại người dùng đó.

194
00:16:17,730 --> 00:16:25,010
Nếu không, xem phần nếu không phải là phần thú vị hơn của bài tập này.

195
00:16:25,010 --> 00:16:30,290
Nếu người dùng không tồn tại, thì chúng ta cần tạo một người dùng mới.

196
00:16:30,290 --> 00:16:33,959
Bây giờ để tạo ra người dùng mới, chúng ta sẽ nói người dùng,

197
00:16:38,653 --> 00:16:42,181
= người dùng mới, và khi chúng ta tạo ra một người dùng mới, hãy

198
00:16:42,181 --> 00:16:45,832
nhớ lại rằng chúng ta cần phải vượt qua tên người dùng.

199
00:16:45,832 --> 00:16:50,970
Tên người dùng sẽ được lấy từ hồ sơ, và hồ sơ Facebook

200
00:16:50,970 --> 00:16:57,200
đã trả lại sẽ có một trường được gọi là tên DisplayName.

201
00:16:57,200 --> 00:17:02,050
Và đó là lĩnh vực mà tôi sẽ sử dụng để tạo ra một người dùng mới ở đây.

202
00:17:02,050 --> 00:17:07,176
Vì vậy, chúng tôi sẽ tạo ra một người dùng mới với tên người dùng được thiết lập

203
00:17:07,176 --> 00:17:13,455
bằng DisplayName, và sau khi người dùng được tạo ra,

204
00:17:13,455 --> 00:17:21,874
sau đó chúng tôi sẽ nói user.facebookid, = profile.id

205
00:17:21,874 --> 00:17:24,654
Vì vậy, chúng tôi sẽ lưu ID Facebook của người dùng.

206
00:17:24,654 --> 00:17:28,902
Vì vậy, trở lại trong đối tượng hồ sơ này ở đây, và

207
00:17:28,902 --> 00:17:33,979
sau đó đặt ID Facebook của người dùng vào ID hồ sơ.

208
00:17:33,979 --> 00:17:38,204
Vì vậy, sau đó, nếu cùng một người dùng đăng nhập,

209
00:17:38,204 --> 00:17:43,265
tìm kiếm này sẽ có thể tìm thấy người dùng này trong cơ sở dữ liệu của chúng tôi.

210
00:17:43,265 --> 00:17:46,450
Và sau đó chúng ta sẽ

211
00:17:46,450 --> 00:17:50,863
nói user.firstname

212
00:17:50,863 --> 00:17:57,242
= profile.name.givenName

213
00:17:58,857 --> 00:18:02,447
Vì vậy, hồ sơ có đối tượng tên này trên

214
00:18:02,447 --> 00:18:07,970
đó, có một tên nhất định và một tên gia đình liên quan đến điều này.

215
00:18:07,970 --> 00:18:10,994
Điều này được trả lại từ hồ sơ Facebook của người dùng.

216
00:18:10,994 --> 00:18:16,165
Và cũng là user.lastname chúng tôi sẽ đặt

217
00:18:16,165 --> 00:18:21,026
nó thành profile.name.FamilyName.

218
00:18:22,762 --> 00:18:28,232
Và sau đó, một khi chúng tôi đã thiết lập tất cả những điều này, chúng tôi sẽ nói user.save.

219
00:18:28,232 --> 00:18:31,310
Vì vậy, chúng tôi đang lưu các thay đổi cho người dùng và

220
00:18:31,310 --> 00:18:35,270
sau đó điều này sẽ trở lại err và người dùng.

221
00:18:35,270 --> 00:18:39,090
Vì vậy, nó sẽ trả lại một lỗi nếu người dùng không thể được tạo ra,

222
00:18:39,090 --> 00:18:42,960
nếu không nó sẽ trả lại người dùng được tạo ra ở đây.

223
00:18:42,960 --> 00:18:47,240
Vì vậy, trong trường hợp này chúng ta sẽ nói, nếu (err),

224
00:18:47,240 --> 00:18:51,745
sau đó sẽ trở lại thực hiện (err,

225
00:18:51,745 --> 00:18:58,627
false) bởi vì chúng tôi đã không quản lý để tạo ra người dùng.

226
00:18:58,627 --> 00:19:03,824
khác, người dùng đã được tạo thành công,

227
00:19:03,824 --> 00:19:08,615
vì vậy chúng tôi sẽ trả lại xong (null, user).

228
00:19:08,615 --> 00:19:11,265
Vì vậy, không có vấn đề gì trường hợp là,

229
00:19:11,265 --> 00:19:15,965
nếu người dùng tồn tại sau đó bạn sẽ tìm thấy người dùng đó và trả về giá trị.

230
00:19:15,965 --> 00:19:19,824
Nếu người dùng không tồn tại, bạn sẽ tạo ra một người dùng mới dựa trên

231
00:19:19,824 --> 00:19:22,431
hồ sơ Facebook của người dùng mà chúng tôi thu được.

232
00:19:22,431 --> 00:19:28,772
Và sau đó thêm vào người dùng mới vào trang web máy chủ của chúng tôi, vào cơ sở dữ liệu.

233
00:19:28,772 --> 00:19:32,642
Vì vậy, đây là chiến lược mà chúng tôi cấu hình cho

234
00:19:32,642 --> 00:19:37,532
hộ chiếu của chúng tôi, FacebookTokenStrategy mới.

235
00:19:37,532 --> 00:19:40,552
Vì vậy, điều này sẽ cho phép chúng tôi tìm thấy người dùng.

236
00:19:40,552 --> 00:19:45,571
Vì vậy, bây giờ chúng tôi đã cấu hình ứng dụng của chúng tôi để

237
00:19:45,571 --> 00:19:50,499
tạo ra một người dùng hoặc tìm người dùng dựa trên ID Facebook.

238
00:19:50,499 --> 00:19:55,752
Bước cuối cùng là tất nhiên để giới thiệu

239
00:19:55,752 --> 00:20:00,851
một tuyến đường mới vào tệp users.js.

240
00:20:00,851 --> 00:20:05,284
Vì vậy, trong tập tin users.js bạn sẽ nhớ lại rằng chúng tôi đã có tuyến đường đăng ký

241
00:20:05,284 --> 00:20:09,950
cho phép người dùng đăng ký tài khoản cục bộ với tên người dùng và mật khẩu.

242
00:20:09,950 --> 00:20:15,137
Và sau đó bạn có đăng nhập cho phép người dùng đăng nhập bằng tên người dùng và

243
00:20:15,137 --> 00:20:15,730
mật khẩu.

244
00:20:15,730 --> 00:20:19,455
Nhưng bây giờ, chúng tôi sẽ sử dụng Facebook để đăng nhập vào người dùng.

245
00:20:19,455 --> 00:20:25,601
Vì vậy, trong trường hợp này chúng ta sẽ nói, router.get,

246
00:20:25,601 --> 00:20:32,208
và điểm cuối sẽ là /facebook/token.

247
00:20:32,208 --> 00:20:37,260
Vì vậy, nếu người dùng gửi một yêu cầu get cho người dùng/facebook/token,

248
00:20:37,260 --> 00:20:41,550
sau đó chúng tôi sẽ được xác thực người dùng bằng cách sử dụng

249
00:20:41,550 --> 00:20:45,585
xác thực dựa trên Facebook OAuth 2.

250
00:20:45,585 --> 00:20:50,470
Vì vậy, ở đây, chúng tôi sẽ nói passport.authenticate, và

251
00:20:50,470 --> 00:20:57,555
chúng tôi sẽ được xác thực bằng cách sử dụng chiến lược facebook-token.

252
00:20:57,555 --> 00:21:04,076
Nhớ lại rằng chúng tôi đã cấu hình này trong tập tin authenticate.js của chúng tôi,

253
00:21:04,076 --> 00:21:10,908
vì vậy chúng tôi sẽ cấu hình hộ chiếu xác thực chiến lược facebook-token và

254
00:21:10,908 --> 00:21:15,786
sau đó chức năng gọi lại mà được req, res ở đây.

255
00:21:23,390 --> 00:21:30,081
Vì vậy, hãy để tôi, Chuyển đổi từ bọc ở đây,

256
00:21:30,081 --> 00:21:36,356
vì vậy bạn có thể thấy rằng đây là router.get trên điểm cuối này ở đây.

257
00:21:36,356 --> 00:21:44,890
Và sau đó ở đây, tôi sẽ cấu hình ứng dụng này.

258
00:21:44,890 --> 00:21:51,768
Vì vậy, tại thời điểm này, chúng ta sẽ nói, nếu (req.user), bây giờ nhận thấy rằng khi chúng ta gọi

259
00:21:51,768 --> 00:21:57,168
passport.authenticate với chiến lược facebook-token.

260
00:21:57,168 --> 00:21:59,055
Điều này, nếu nó thành công,

261
00:21:59,055 --> 00:22:03,010
nó sẽ được nạp vào người dùng vào đối tượng yêu cầu.

262
00:22:03,010 --> 00:22:08,387
Vì vậy, bởi thời gian chúng tôi đến thời điểm này ở đây sau khi passport.authenticate

263
00:22:08,387 --> 00:22:11,596
facebook-token trung gian ware được thực hiện,

264
00:22:11,596 --> 00:22:16,291
bạn sẽ có người dùng đã nạp vào đối tượng yêu cầu.

265
00:22:16,291 --> 00:22:23,070
Vì vậy, nếu đây là trường hợp, Sau đó, chúng tôi sẽ nói, chúng tôi sẽ tạo ra một mã thông báo.

266
00:22:23,070 --> 00:22:27,709
Chúng tôi sẽ tạo ra một mã thông báo web JSON ở đây, giống như cách chúng tôi

267
00:22:27,709 --> 00:22:32,371
tạo mã thông báo web JSON khi người dùng đăng nhập vào đây.

268
00:22:32,371 --> 00:22:35,275
Vì vậy, chúng ta sẽ sao chép nó ở đây.

269
00:22:38,010 --> 00:22:41,586
Authenticate.getToken, vì vậy điều này sẽ giúp chúng tôi nhận được mã thông báo web JSON.

270
00:22:41,586 --> 00:22:46,656
Vì vậy, về cơ bản, người dùng đang gửi mã thông báo truy cập đến máy

271
00:22:46,656 --> 00:22:50,634
chủ express, máy chủ express sử dụng AccessToken để đi đến Facebook và

272
00:22:50,634 --> 00:22:52,979
sau đó lấy hồ sơ của người dùng.

273
00:22:52,979 --> 00:22:57,560
Và nếu người dùng không tồn tại, chúng tôi sẽ tạo một người dùng mới với ID Facebook đó.

274
00:22:57,560 --> 00:23:02,486
Và sau đó, sau đó máy chủ express của chúng tôi sẽ tạo ra

275
00:23:02,486 --> 00:23:07,818
một mã thông báo web JSON và sau đó trả lại mã thông báo web JSON cho khách hàng của chúng tôi.

276
00:23:07,818 --> 00:23:13,878
Tất cả các truy cập tiếp theo từ người dùng của chúng tôi sẽ phải bao gồm

277
00:23:13,878 --> 00:23:19,317
mã thông báo web JSON này mà chúng tôi vừa trả lại bằng cách sử dụng cách tiếp cận này.

278
00:23:19,317 --> 00:23:24,280
Vì vậy, tại thời điểm này bạn không còn cần mã thông báo truy cập Facebook nữa.

279
00:23:24,280 --> 00:23:29,287
Bạn có thể loại bỏ mã thông báo truy cập Facebook tại thời điểm này vì mã

280
00:23:29,287 --> 00:23:35,237
thông báo web JSON là mã thông báo duy trì xác thực người dùng hoạt động trong

281
00:23:35,237 --> 00:23:39,602
bất kỳ thời gian nào mà mã thông báo web JSON này hoạt động.

282
00:23:39,602 --> 00:23:45,529
Bây giờ ngoài việc này, tất nhiên chúng ta cũng cần phải làm những bước này ở đây.

283
00:23:45,529 --> 00:23:48,365
Vì vậy, tôi sẽ chỉ sao chép phần đó ở đây.

284
00:23:48,365 --> 00:23:53,336
bởi vì tôi sẽ làm chính xác cùng một điều trong trường hợp này cũng,

285
00:23:53,336 --> 00:23:56,284
vì vậy chúng tôi sẽ dán vào mã đó ở đây.

286
00:23:56,284 --> 00:24:00,485
Vì vậy, chúng tôi sẽ nói StatusCode = 200, loại tiêu đề nội dung, và

287
00:24:00,485 --> 00:24:06,120
sau đó chúng tôi sẽ nói res.json bạn đã đăng nhập thành công, và đó là nó.

288
00:24:06,120 --> 00:24:13,521
Vì vậy, với cách tiếp cận này, như bạn có thể thấy, bây giờ sử dụng một cuộc gọi đến điểm cuối này.

289
00:24:13,521 --> 00:24:17,498
Ứng dụng người dùng, khách hàng trong trường hợp này,

290
00:24:17,498 --> 00:24:24,320
sẽ vượt qua trong mã thông báo truy cập Facebook mà nó vừa thu được từ Facebook.

291
00:24:24,320 --> 00:24:27,970
Và sau đó máy chủ nhanh của chúng tôi sau đó sẽ sử dụng mã thông báo truy cập Facebook để

292
00:24:27,970 --> 00:24:30,380
xác minh người dùng trên Facebook.

293
00:24:30,380 --> 00:24:35,580
Và sau đó nếu người dùng được Facebook thừa nhận là người dùng hợp pháp,

294
00:24:35,580 --> 00:24:42,110
thì máy chủ thể hiện của chúng tôi sẽ trả lại một mã thông báo kết hôn JSON cho khách hàng của chúng tôi.

295
00:24:42,110 --> 00:24:44,920
Và sau đó khách hàng của chúng tôi được xác thực và

296
00:24:44,920 --> 00:24:48,650
sau đó có thể tiến hành thực hiện các hoạt động khác

297
00:24:48,650 --> 00:24:53,460
bằng cách sử dụng mã thông báo wed JSON trong tiêu đề của tất cả các tin nhắn yêu cầu.

298
00:24:53,460 --> 00:25:00,190
Sau đó, giống như chúng tôi đã làm với chiến lược xác thực địa phương, đó là nó.

299
00:25:00,190 --> 00:25:07,630
Vì vậy, chúng tôi đã hoàn thành tất cả các cập nhật cho ứng dụng của chúng tôi, chúng ta hãy lưu các thay đổi.

300
00:25:08,810 --> 00:25:14,940
Đi đến thiết bị đầu cuối của chúng tôi, chúng ta hãy khởi động máy chủ ở đây,

301
00:25:14,940 --> 00:25:19,710
vì vậy chúng tôi sẽ nói npm bắt đầu, và máy chủ đang lên và chạy.

302
00:25:20,740 --> 00:25:26,320
Và tôi nhận thấy rằng tôi đã gõ vào cổng P-A-S-S-S,

303
00:25:26,320 --> 00:25:28,790
và do đó điều này gây ra một lỗi ở đây.

304
00:25:28,790 --> 00:25:32,250
Vì vậy, lưu ý rằng làm thế nào dễ dàng nó là để làm cho lỗi.

305
00:25:32,250 --> 00:25:35,439
Vì vậy, hãy để tôi đi và sửa chữa điều đó và sau đó trở lại và khởi động lại máy chủ của tôi.

306
00:25:37,080 --> 00:25:40,280
Vì vậy, khi bạn gặp phải những lỗi như thế này, đừng hoảng sợ.

307
00:25:40,280 --> 00:25:43,470
Nhìn xung quanh để xem vấn đề ở đâu và rất thường xuyên,

308
00:25:43,470 --> 00:25:47,580
nó sẽ là một vấn đề đơn giản như thế này sẽ gây ra lỗi cho bạn.

309
00:25:48,970 --> 00:25:54,160
Một lần nữa, quay trở lại users.js và

310
00:25:54,160 --> 00:25:57,930
bạn thấy rằng trong các tập tin authenticate.js,

311
00:25:57,930 --> 00:26:02,270
Tôi đã cấu hình này nói cổng P-A-S-S-S.

312
00:26:02,270 --> 00:26:06,100
Vì vậy, trong tập tin authenticate.js, hãy để tôi sửa chữa điều đó để passsport và

313
00:26:06,100 --> 00:26:08,702
sau đó lưu các thay đổi và sau đó khởi động lại máy chủ của tôi.

314
00:26:09,770 --> 00:26:16,340
Bây giờ, khởi động lại máy chủ của tôi, Vì vậy, máy chủ của tôi bây giờ đã lên và chạy.

315
00:26:17,400 --> 00:26:20,160
Tại thời điểm này, hãy truy cập trình duyệt.

316
00:26:20,160 --> 00:26:26,212
Và trong trình duyệt, nhập https://localhost3443.

317
00:26:29,625 --> 00:26:37,350
Nếu bạn tình cờ có trang này được lưu trữ ở đây, bạn có thể muốn xóa bộ nhớ cache.

318
00:26:37,350 --> 00:26:41,417
Hoặc chỉ cần gõ localhost:3343/index.html, và

319
00:26:41,417 --> 00:26:45,829
sau đó bạn sẽ ngay lập tức nhận thấy rằng trong index.html này,

320
00:26:45,829 --> 00:26:49,640
bạn sẽ thấy nút này được gọi là nút Đăng nhập.

321
00:26:49,640 --> 00:26:54,280
Vì vậy, chúng tôi sẽ nhấp vào nút đăng nhập này để đăng nhập vào Facebook.

322
00:26:54,280 --> 00:26:59,880
Hãy đăng nhập và sau đó bạn sẽ đưa ra thông điệp này ở đây.

323
00:26:59,880 --> 00:27:03,365
Nếu bạn đã đăng nhập vào Facebook trước đó,

324
00:27:03,365 --> 00:27:07,840
nó sẽ yêu cầu sự cho phép để tiếp tục với tư cách là người dùng.

325
00:27:07,840 --> 00:27:12,440
Nếu không, sau đó nó sẽ yêu cầu bạn đăng nhập vào Facebook và

326
00:27:12,440 --> 00:27:14,030
sau đó cho phép bạn tiếp tục.

327
00:27:14,030 --> 00:27:17,000
Kể từ khi tôi vừa đăng nhập vào Facebook một chút trước đó, vì vậy

328
00:27:17,000 --> 00:27:19,020
tôi chỉ có thể nhấp vào Tiếp tục.

329
00:27:19,020 --> 00:27:24,955
Bây giờ, mở giao diện điều khiển JavaScript của các nhà phát triển ở dưới đây.

330
00:27:24,955 --> 00:27:31,810
Và trong bảng điều khiển JavaScript, bạn sẽ thấy một loạt các thông điệp được in ở đây.

331
00:27:31,810 --> 00:27:33,070
Và sau đó đặc biệt,

332
00:27:33,070 --> 00:27:37,720
mở đối tượng này mà bạn sẽ thấy trong giao diện điều khiển JavaScript.

333
00:27:37,720 --> 00:27:43,081
Và bên trong đối tượng này, bạn sẽ thấy phản ứng alt này ở đây.

334
00:27:43,081 --> 00:27:49,370
Và trong đó, bạn sẽ thấy một công cụ truy cập hiện diện ở đó.

335
00:27:49,370 --> 00:27:55,320
Bây giờ, đây là một câu trả lời được lấy từ Facebook hoặc

336
00:27:55,320 --> 00:28:00,610
ra để xác thực máy chủ bởi ứng dụng của chúng tôi ở đây.

337
00:28:00,610 --> 00:28:03,060
Và tôi sẽ chỉ đơn giản sao chép điều này,

338
00:28:03,060 --> 00:28:07,010
bởi vì đây là mã thông báo truy cập mà Facebook đã cung cấp cho chúng tôi.

339
00:28:07,010 --> 00:28:13,710
Bây giờ, tôi cần phải cung cấp mã thông báo truy cập này cho máy chủ nhanh của tôi

340
00:28:13,710 --> 00:28:19,990
để nó đi và xác minh hồ sơ của tôi, và sau đó cho phép tôi đăng nhập vào ứng dụng đó.

341
00:28:19,990 --> 00:28:22,860
Vì vậy, tôi đang làm điều này trong một cách siết chặt

342
00:28:22,860 --> 00:28:27,560
ở đây chỉ đơn giản bởi vì tôi muốn cho bạn thấy làm thế nào các mã thông báo truy cập đến ở đây.

343
00:28:27,560 --> 00:28:30,940
Và chúng tôi sao chép mã thông báo truy cập, sau đó tôi sẽ lấy điều này và

344
00:28:30,940 --> 00:28:36,820
sử dụng Postman để gửi mã thông báo truy cập này đến máy chủ Express của tôi.

345
00:28:36,820 --> 00:28:42,330
Bây giờ, khi bạn thiết kế một ứng dụng web như Angular, hoặc

346
00:28:42,330 --> 00:28:48,840
ứng dụng Ionic, hoặc ứng dụng NativeScript, bạn không cần phải thực hiện tất cả các bước này.

347
00:28:48,840 --> 00:28:53,634
Bây giờ, về cơ bản khi mã thông báo truy cập được trả lại cho ứng dụng web của bạn

348
00:28:53,634 --> 00:28:58,086
, ứng dụng Angular, hoặc ứng dụng Ionic, hoặc ứng dụng NativeScript,

349
00:28:58,086 --> 00:29:01,868
bạn sẽ chỉ cần nắm bắt mã thông báo truy cập này trong đó.

350
00:29:01,868 --> 00:29:06,791
Và sau đó bạn sẽ vượt qua mã thông báo truy cập này vào

351
00:29:06,791 --> 00:29:12,770
máy chủ Express bằng cách sử dụng XMLHttpRequest để có được thông tin.

352
00:29:12,770 --> 00:29:16,410
Nhưng kể từ khi tôi muốn minh họa thủ công các bước.

353
00:29:16,410 --> 00:29:21,319
Vì vậy, tôi thiết lập index.html này với một

354
00:29:21,319 --> 00:29:24,640
mã JavaScript đơn giản mà Facebook cung cấp cho tôi.

355
00:29:26,420 --> 00:29:30,792
Vì vậy, tôi sẽ có thể truy xuất mã thông báo ủy quyền này mà chúng tôi thu được từ

356
00:29:30,792 --> 00:29:31,454
Facebook.

357
00:29:31,454 --> 00:29:34,662
Vì vậy, để tôi sao chép mã ủy quyền này.

358
00:29:34,662 --> 00:29:39,110
Bây giờ, chúng tôi sẽ đi đến Postman, và sau đó thử và

359
00:29:39,110 --> 00:29:45,340
xem làm thế nào chúng tôi có thể có được mã thông báo web JSON từ máy chủ Express của chúng tôi.

360
00:29:45,340 --> 00:29:49,220
Bây giờ, đi đến Postman, từ Postman,

361
00:29:49,220 --> 00:29:54,525
cho phép tôi bây giờ làm một yêu cầu GET để

362
00:29:54,525 --> 00:30:03,195
LocalHost: 3443user'sfacebookToken.

363
00:30:03,195 --> 00:30:07,855
Và khi tôi gửi yêu cầu này đến thời điểm đó,

364
00:30:07,855 --> 00:30:13,115
cấu hình khác mà tôi cần phải làm ở đây là,

365
00:30:13,115 --> 00:30:18,080
tôi cần phải vượt qua trong mã thông báo truy cập này mà tôi vừa thu được.

366
00:30:18,080 --> 00:30:21,970
Bây giờ, để vượt qua một mã thông báo truy cập trong tiêu đề,

367
00:30:21,970 --> 00:30:26,370
tôi có thể vượt qua nó như một tiêu đề ủy quyền bằng cách gõ ủy quyền.

368
00:30:26,370 --> 00:30:33,660
Nhưng lưu ý rằng giá trị nên được gõ như Beta với một chữ B trong trường hợp này,

369
00:30:33,660 --> 00:30:41,350
và sau đó dán mã thông báo truy cập mà chúng tôi thu được từ Facebook ở đây.

370
00:30:41,350 --> 00:30:44,840
Lưu ý vốn B ở đây, và

371
00:30:44,840 --> 00:30:48,990
sau đó bạn có thể vượt qua trong này để máy chủ của chúng tôi.

372
00:30:50,090 --> 00:30:53,970
Và sau đó khi trả lời từ máy chủ của chúng tôi,

373
00:30:53,970 --> 00:30:59,810
bạn sẽ thấy rằng bạn đã có được mã thông báo web JSON từ trang web máy chủ của chúng tôi.

374
00:30:59,810 --> 00:31:05,472
Vì vậy, đây là một cách mà bạn có được mã thông báo web JSON bằng cách trao đổi

375
00:31:05,472 --> 00:31:10,000
mã thông báo truy cập của bạn từ Facebook mà bạn vừa thu được với máy chủ Express của bạn.

376
00:31:10,000 --> 00:31:16,330
Và máy chủ Express của bạn lần lượt sẽ đi và

377
00:31:16,330 --> 00:31:19,960
lấy thông tin hồ sơ của bạn từ Facebook, và

378
00:31:19,960 --> 00:31:23,720
sau đó tạo một tài khoản đặc biệt cho bạn, và

379
00:31:23,720 --> 00:31:28,260
sau đó trả lại cho bạn mã thông báo web JSON nếu mọi thứ thành công.

380
00:31:28,260 --> 00:31:33,290
Một cách khác để đi qua thông tin này là trong tiêu đề,

381
00:31:33,290 --> 00:31:40,480
bạn gõ access_token làm khóa.

382
00:31:40,480 --> 00:31:46,268
Và trong giá trị, bạn chỉ cần gõ vào

383
00:31:46,268 --> 00:31:52,020
mã thông báo truy cập như thế này ở đây, và sau đó bạn có thể gửi yêu cầu Và điều tương tự.

384
00:31:52,020 --> 00:31:55,878
Nó sẽ một lần nữa trả lại mã thông báo web JSON cho bạn.

385
00:31:55,878 --> 00:31:59,410
Và sau đó bạn sẽ nắm bắt mã thông báo web JSON, và sau đó tiếp tục với phần còn lại

386
00:31:59,410 --> 00:32:05,300
của các truy cập vào máy chủ express của bạn bằng cách sử dụng mã thông báo web JSON này.

387
00:32:05,300 --> 00:32:10,010
Một cách tiếp cận thứ ba là bao gồm điều này vào

388
00:32:10,010 --> 00:32:15,410
URL của bạn chính nó như là một tham số truy vấn.

389
00:32:15,410 --> 00:32:23,827
Cách tiếp cận thứ ba là nói mã thông báo? access_token= và

390
00:32:23,827 --> 00:32:32,290
sau đó dán mã thông báo web JSON vào tham số truy vấn đó.

391
00:32:32,290 --> 00:32:37,140
Không sử dụng các dấu ngoặc kép ở đây, chỉ là mã thông báo web JSON.

392
00:32:37,140 --> 00:32:40,810
Và sau đó gửi yêu cầu đến máy chủ của bạn.

393
00:32:40,810 --> 00:32:47,680
Và sau đó thậm chí sau đó máy chủ của bạn sẽ trả về mã thông báo web JSON tương ứng.

394
00:32:47,680 --> 00:32:52,450
Vì vậy, bạn thấy ba cách khác nhau mà bạn có thể phân tích cú pháp trong Facebook Access Token của

395
00:32:52,450 --> 00:32:57,350
bạn đến máy chủ của bạn, và sau đó có được mã thông báo web JSON từ máy chủ của bạn.

396
00:32:57,350 --> 00:33:01,660
Và sau đó, phần còn lại của các bước này tiến hành giống như trước đây.

397
00:33:02,970 --> 00:33:09,400
Bây giờ để thuyết phục bạn rằng thực sự một tài khoản mới đã được tạo ra với

398
00:33:09,400 --> 00:33:13,720
hồ sơ Facebook cho người dùng cụ thể này, chúng ta hãy đi đến thiết bị đầu cuối.

399
00:33:15,080 --> 00:33:20,240
Trong thiết bị đầu cuối, trong một cửa sổ thiết bị đầu cuối mới, tôi sẽ bắt đầu gợn mongo ở đây.

400
00:33:20,240 --> 00:33:25,050
Vì vậy, trong gợn mongo, hãy để tôi nói, sử dụng Confect.

401
00:33:25,050 --> 00:33:31,560
Và sau đó tôi sẽ nói, db.users.find () .pretty (),

402
00:33:31,560 --> 00:33:36,570
và sau đó in ra tất cả những người dùng được đăng ký trong hệ thống của tôi.

403
00:33:36,570 --> 00:33:40,540
Bạn nhận thấy rằng ba người dùng mà chúng tôi đã cấu hình trong các bài tập trước đó

404
00:33:40,540 --> 00:33:41,410
là tất cả ở đó.

405
00:33:43,350 --> 00:33:48,130
Thông báo ngoài một người dùng thứ tư vừa được thêm vào.

406
00:33:48,130 --> 00:33:53,580
Và lưu ý rằng đối với người dùng cụ thể này, chúng tôi chưa có băm trong nguồn,

407
00:33:53,580 --> 00:33:57,650
nhưng thay vào đó FaceBookID của người dùng đó được thiết lập và tên

408
00:33:57,650 --> 00:34:02,660
người dùng được thiết lập là giá trị đó, và tên người dùng được thiết lập ở đó.

409
00:34:02,660 --> 00:34:05,580
Và cũng là tên cuối cùng nên đã được thiết lập ở đây nhưng

410
00:34:05,580 --> 00:34:08,990
tôi nghĩ rằng có một lỗi nhỏ trong mã của tôi.

411
00:34:08,990 --> 00:34:16,910
Vì vậy, tôi sẽ đi và kiểm tra phần họ của nó ở đó.

412
00:34:18,100 --> 00:34:20,110
Đang vào authenticate.js.

413
00:34:20,110 --> 00:34:23,130
Để tôi xem tôi có phạm sai lầm ở đây không.

414
00:34:23,130 --> 00:34:24,580
Chúng ta đi đây.

415
00:34:24,580 --> 00:34:28,340
Tôi đã nhập tên F-A-M-I-L-Y.

416
00:34:28,340 --> 00:34:31,980
Vì vậy, bạn thấy đấy, ngay cả tôi cũng không phải là về phạm sai lầm.

417
00:34:31,980 --> 00:34:36,277
Vì vậy, đây nên là FamilyName đây,

418
00:34:36,277 --> 00:34:42,730
user.lastname hồ sơ .name.FamilyName đây.

419
00:34:42,730 --> 00:34:46,520
Vì vậy, hãy để tôi lưu các thay đổi, và bây giờ mã sẽ hoạt động chính xác.

420
00:34:47,710 --> 00:34:49,950
Một lần nữa quay trở lại thiết bị đầu cuối,

421
00:34:49,950 --> 00:34:54,460
bây giờ bạn thấy rằng một người dùng mới đã được tạo ra với hồ sơ Facebook ở đây.

422
00:34:54,460 --> 00:34:59,130
Bây giờ bất kỳ thời gian tiếp theo tôi đã cố gắng để xác thực bản thân mình bằng cách sử dụng Facebook

423
00:34:59,130 --> 00:35:00,520
là quá trình tương tự.

424
00:35:00,520 --> 00:35:03,000
Tôi thu được mã thông báo truy cập từ Facebook và

425
00:35:03,000 --> 00:35:06,160
sau đó phân tích cú pháp trong mã thông báo truy cập đến máy chủ express của tôi.

426
00:35:06,160 --> 00:35:10,790
Máy chủ nhanh của tôi sau đó sẽ truy cập Facebook, lấy hồ sơ và

427
00:35:10,790 --> 00:35:14,020
sau đó kiểm tra xem người dùng đã tồn tại chưa.

428
00:35:14,020 --> 00:35:18,660
Và trong lần đăng nhập tiếp theo mà tôi sử dụng Facebook,

429
00:35:18,660 --> 00:35:22,460
tôi sẽ thấy rằng người dùng cụ thể này đã tồn tại trong hệ thống.

430
00:35:22,460 --> 00:35:26,540
Vì vậy, nó sẽ chỉ đơn giản là tiến hành về phía trước và người dùng sẽ được xác thực và

431
00:35:26,540 --> 00:35:31,730
sau đó máy chủ bổ sung sẽ phát hành một mã thông báo web JSON cho

432
00:35:31,730 --> 00:35:37,385
khách hàng của họ và chúng tôi có thể tiến hành chuyển tiếp từ thời điểm đó trở đi giống như trước đây.

433
00:35:37,385 --> 00:35:42,395
Vì vậy, bạn thấy, thiết lập xác thực dựa trên OAuth 2 bằng cách sử dụng một

434
00:35:42,395 --> 00:35:48,123
nhà cung cấp dịch vụ OAuth 2 như Facebook không phải là khó khăn với điều kiện chúng tôi nhận được giữ

435
00:35:48,123 --> 00:35:54,135
của hộ chiếu thích hợp Facebook xác thực mô-đun dựa trên chiến lược.

436
00:35:54,135 --> 00:35:59,060
Giống như hộ chiếu Facebook token mà đã chăm sóc phần lớn

437
00:35:59,060 --> 00:36:04,253
công việc thay mặt chúng tôi và sau đó cho phép chúng tôi thiết lập máy chủ thể hiện của chúng tôi

438
00:36:04,253 --> 00:36:09,750
để xử lý xác thực của bên thứ ba dựa trên OAuth 2 từ Facebook.

439
00:36:09,750 --> 00:36:12,730
Với điều này, chúng tôi hoàn thành bài tập này.

440
00:36:12,730 --> 00:36:16,490
Trong bài tập này, chúng tôi đã học được cách thực hiện tất cả các xác thực OAuth 2

441
00:36:16,490 --> 00:36:20,590
bằng cách sử dụng Facebook như xác thực OAuth 2 được cung cấp.

442
00:36:20,590 --> 00:36:25,263
Đây là thời điểm tốt để bạn lưu các thay đổi mà bạn đã thực hiện cho

443
00:36:25,263 --> 00:36:29,521
Git Repository của bạn với thư hộ chiếu Facebook.

444
00:36:29,521 --> 00:36:35,380
[ NHẠC]