Thông tin về lớp học lập trình này
1. Sử dụng API của Google Workspace
Lớp học lập trình này giới thiệu cho bạn cách sử dụng các API RESTful dựa trên HTTP của Google Workspace (trước đây là G Suite). Ví dụ này sẽ được hoàn tất bằng Python để ngắn gọn và dễ dàng cung cấp. Tuy nhiên, bạn cũng có thể chọn sử dụng ngôn ngữ phát triển mà mình yêu thích. Bạn sẽ được làm quen với các chủ đề giới thiệu, chẳng hạn như cách sử dụng bảng điều khiển dành cho nhà phát triển để tạo/quản lý dự án, lấy thông tin đăng nhập ủy quyền và cài đặt thư viện ứng dụng API. Sau khi hoàn tất các thủ tục, bạn sẽ viết một ứng dụng để hiển thị 100 tệp đầu tiên & trong Google Drive bằng cách sử dụng API của thư mục đó.
Kiến thức bạn sẽ học được
- Tạo dự án bằng Google/Cloud Developers Console
- Lấy & sử dụng thông tin đăng nhập của ứng dụng OAuth2 trong ứng dụng của bạn
- Tìm hiểu về cách sử dụng Thư viện ứng dụng API của Google
- Viết ứng dụng bằng Google & API Google Workspace
- Lấy thông tin về tệp và thư mục bằng API Google Drive
Bạn cần có
- Quyền truy cập vào Internet và trình duyệt web
- Tài khoản Google (tài khoản Google Workspace có thể cần phải được quản trị viên phê duyệt)
- Quen thuộc với các hệ thống tuân thủ POSIX như Linux và Mac OS X
- Có thể tạo tệp nguồn bằng trình soạn thảo mã hoặc lệnh shell.
- Có kỹ năng cơ bản trong Python (2 hoặc 3), nhưng bạn có thể sử dụng bất kỳ ngôn ngữ nào được hỗ trợ
- Một số tệp và/hoặc thư mục trong Google Drive
2. Khảo sát
Bạn sẽ sử dụng hướng dẫn cho lớp học lập trình này như thế nào?
Bạn đánh giá thế nào về trải nghiệm của mình khi sử dụng các công cụ của Google Workspace cho nhà phát triển và API?
3. Tổng quan
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách:
- Tải thư viện ứng dụng API của Google cho Python
- Tạo dự án mới trong Google/Cloud Developers Console
- Lấy thông tin đăng nhập cần thiết cho ứng dụng của bạn
- Sử dụng những thông tin đăng nhập đó để truy cập vào API Google Drive
Nếu không muốn sử dụng Python, bạn có thể triển khai lớp học lập trình này bằng công cụ phát triển mà mình yêu thích (bạn có thể truy cập thư viện ứng dụng của các ngôn ngữ được hỗ trợ tại đây) và chỉ cần tham chiếu các ví dụ Python dưới dạng mã giả (có thể thực thi).
4. Xác nhận môi trường Python
Lớp học lập trình này yêu cầu bạn sử dụng ngôn ngữ Python (mặc dù thư viện ứng dụng Google API hỗ trợ nhiều ngôn ngữ, vì vậy, bạn có thể tạo một ngôn ngữ tương đương trong công cụ phát triển yêu thích và chỉ cần dùng Python làm mã giả). Cụ thể, lớp học lập trình này hỗ trợ Python 2 và 3, nhưng bạn nên chuyển sang 3.x càng sớm càng tốt.
Cloud Shell là một giải pháp tiện lợi được cung cấp trực tiếp cho người dùng từ Cloud Console mà không cần đến môi trường phát triển cục bộ. Vì vậy, hướng dẫn này có thể được thực hiện hoàn toàn trên đám mây bằng trình duyệt web. Cloud Shell đặc biệt hữu ích nếu bạn đang phát triển hoặc có kế hoạch tiếp tục phát triển bằng các sản phẩm của GCP và API. Riêng đối với lớp học lập trình này, Cloud Shell đã cài đặt sẵn cả hai phiên bản Python.
Cloud Shell cũng đã cài đặt IPython... đây là một trình thông dịch Python tương tác cấp cao hơn mà chúng tôi khuyên bạn nên dùng, đặc biệt nếu bạn là thành viên của cộng đồng khoa học dữ liệu hoặc học máy. Nếu bạn ở đó, IPython sẽ là trình phiên dịch mặc định cho Jupyter Notebooks cũng như Colab, Jupyter Notebooks do Google Research lưu trữ.
IPython ưu tiên trình thông dịch Python 3 trước tiên nhưng sẽ quay lại sử dụng Python 2 nếu 3.x không có sẵn. Bạn có thể truy cập IPython từ Cloud Shell nhưng cũng có thể cài đặt trong môi trường phát triển cục bộ. Thoát bằng phím ^D (Ctrl-d) và chấp nhận ưu đãi để thoát. Kết quả mẫu khi bắt đầu ipython
sẽ có dạng như sau:
$ ipython Python 3.7.3 (default, Mar 4 2020, 23:11:43) Type 'copyright', 'credits' or 'license' for more information IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help. In [1]:
Nếu IPython không phải là lựa chọn ưu tiên của bạn, bạn hoàn toàn được chấp nhận sử dụng trình thông dịch tương tác Python tiêu chuẩn (Cloud Shell hoặc môi trường phát triển cục bộ) (cũng thoát bằng ^D):
$ python Python 2.7.13 (default, Sep 26 2018, 18:42:22) [GCC 6.3.0 20170516] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> $ python3 Python 3.7.3 (default, Mar 10 2020, 02:33:39) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Lớp học lập trình này cũng giả định bạn có công cụ cài đặt pip
(trình quản lý gói Python và trình phân giải phần phụ thuộc). Nó đi kèm với các phiên bản 2.7.9+ hoặc 3.4+. Nếu bạn có phiên bản Python cũ hơn, hãy xem hướng dẫn này để biết hướng dẫn cài đặt. Tuỳ thuộc vào quyền của bạn, bạn có thể cần phải có sudo
hoặc quyền truy cập của siêu người dùng, nhưng nhìn chung thì không phải như vậy. Bạn cũng có thể sử dụng pip2
hoặc pip3
một cách rõ ràng để thực thi pip
cho các phiên bản Python cụ thể.
Phần còn lại của lớp học lập trình sẽ giả định rằng bạn đang sử dụng Python 3. Chúng tôi sẽ cung cấp các hướng dẫn cụ thể cho Python 2 nếu các hướng dẫn đó khác biệt đáng kể so với phiên bản 3.x.
*Tạo và sử dụng môi trường ảo
Phần này là không bắt buộc và chỉ thực sự bắt buộc đối với những người phải sử dụng môi trường ảo cho lớp học lập trình này (theo thanh bên cảnh báo ở trên). Nếu chỉ có Python 3 trên máy tính, bạn chỉ cần đưa ra lệnh này để tạo một Virtualenv có tên my_env
(bạn có thể chọn tên khác nếu muốn):
virtualenv my_env
Tuy nhiên, nếu bạn có cả Python 2 & Trên máy tính, bạn nên cài đặt một Virtualenv Python 3. Bạn có thể thực hiện việc này với -p flag
như sau:
virtualenv -p python3 my_env
Nhập môi trường ảo mới tạo bằng cách "kích hoạt" sẽ như sau:
source my_env/bin/activate
Xác nhận bạn đang ở trong môi trường bằng cách quan sát dấu nhắc lệnh shell giờ đây đứng sau tên môi trường, tức là
(my_env) $
Bây giờ, bạn có thể pip install
mọi gói bắt buộc, thực thi mã trong chế độ này, v.v. Một lợi ích khác là nếu bạn làm rối hoàn toàn, gặp phải tình huống cài đặt Python bị lỗi, v.v., bạn có thể thổi bay toàn bộ môi trường này mà không ảnh hưởng đến phần còn lại của hệ thống.
5. Cài đặt thư viện ứng dụng API của Google cho Python
Lớp học lập trình này yêu cầu bạn sử dụng thư viện ứng dụng API của Google cho Python. Vì vậy, đây là một quy trình cài đặt đơn giản hoặc bạn có thể không phải làm gì cả.
Trước đây, bạn nên cân nhắc sử dụng Cloud Shell để thuận tiện. Bạn có thể xem toàn bộ hướng dẫn bằng trình duyệt web trên đám mây. Một lý do khác để sử dụng Cloud Shell là nhiều công cụ phát triển và thư viện cần thiết phổ biến đã cài đặt trước.
*Cài đặt thư viện ứng dụng
(không bắt buộc) Bạn có thể bỏ qua bước này nếu đang sử dụng Cloud Shell hoặc một môi trường cục bộ nơi bạn đã cài đặt thư viện ứng dụng. Bạn chỉ cần làm việc này nếu đang phát triển cục bộ và chưa (hoặc chưa chắc chắn) bạn đã cài đặt ứng dụng đó. Cách dễ nhất là sử dụng pip
(hoặc pip3
) để cài đặt (bao gồm cả việc cập nhật chính pip
nếu cần):
pip install -U pip google-api-python-client oauth2client
Xác nhận cài đặt
Lệnh này sẽ cài đặt thư viện ứng dụng cũng như mọi gói mà nó phụ thuộc vào. Cho dù bạn đang sử dụng Cloud Shell hay môi trường của riêng bạn, hãy xác minh thư viện ứng dụng đã được cài đặt bằng cách nhập các gói cần thiết và xác nhận rằng không có lỗi nhập (hoặc đầu ra):
python3 -c "import googleapiclient, httplib2, oauth2client"
Nếu sử dụng Python 2 (từ Cloud Shell), bạn sẽ nhận được cảnh báo cho biết dịch vụ này đã ngừng hỗ trợ:
******************************************************************************* Python 2 is deprecated. Upgrade to Python 3 as soon as possible. See https://cloud.google.com/python/docs/python2-sunset To suppress this warning, create an empty ~/.cloudshell/no-python-warning file. The command will automatically proceed in seconds or on any key. *******************************************************************************
Khi bạn có thể chạy lệnh nhập "kiểm thử" đó thành công (không có lỗi/đầu ra), bạn đã có thể bắt đầu trò chuyện với các API của Google!
Tóm tắt
Vì đây là lớp học lập trình nhập môn nên chúng tôi sẽ giả định rằng bạn chưa quen sử dụng các API của Google và Google Workspace. Nếu bạn đã có kinh nghiệm tạo dự án và tạo uỷ quyền cho người dùng bằng "Mã ứng dụng khách OAuth". Nếu có, hãy tạo hoặc sử dụng lại dự án hiện có, tạo hoặc sử dụng lại ID ứng dụng khách OAuth hiện có và bỏ qua 2 mô-đun tiếp theo rồi chuyển thẳng đến phần "Hiển thị tệp trên Drive và ứng dụng thư mục" hoặc chuyển thẳng đến mục "Cách sử dụng nâng cao đối với bảng điều khiển dành cho nhà phát triển" để xem lại các bước đó mà không cần hướng dẫn nhiều.
6. Chỉ định dự án trong Cloud Console
Một ứng dụng sử dụng API của Google yêu cầu phải có một dự án. Các dịch vụ đó được quản lý trong Google Cloud Developers Console hoặc đơn giản là "devconsole". Trong lớp học lập trình này, chúng ta sẽ chỉ sử dụng API Google Drive. Vì vậy, chúng ta có một đường liên kết thần kỳ (ở bên dưới trong Bước 1) cho biết:
- Đưa bạn đến devconsole
- Hướng dẫn bạn tạo một dự án mới (hoặc chọn một dự án hiện có) và
- Tự động bật API Drive
Hãy bắt đầu nào!
- Chuyển đến console.developers.google.com/start/api?id=drive rồi đăng nhập vào Tài khoản Google của bạn.
- Nếu chưa có bất kỳ dự án nào, bạn sẽ thấy màn hình này để chấp nhận Điều khoản dịch vụ API của Google:
Sau khi bạn chấp nhận các điều khoản, một dự án mới có tên là "Dự án của tôi" sẽ được tạo và API Drive tự động bật. 3. Thay vào đó, nếu bạn đã tạo một dự án (có thể là lớp học lập trình trước đây của bạn?), thì bạn sẽ thấy màn hình này:
Khi nhấp vào trình đơn kéo xuống Tạo dự án, hãy chọn một dự án hiện có hoặc thực sự tạo một dự án mới.
Sau khi bạn đưa ra lựa chọn (dự án mới hoặc dự án hiện có), API Drive sẽ tự động được bật cho bạn. 4. Bạn sẽ biết API Drive đã được bật khi xác nhận như sau:
5. Nhấp vào Chuyển đến phần thông tin đăng nhập để chuyển sang bước tiếp theo.
7. *Cho phép các yêu cầu API (uỷ quyền của người dùng)
Bạn có thể bỏ qua phần này nếu đã tạo thông tin đăng nhập uỷ quyền tài khoản người dùng và hiểu rõ quy trình này. Uỷ quyền này khác với uỷ quyền tài khoản dịch vụ có kỹ thuật khác, vì vậy, vui lòng tiếp tục ở bên dưới.
Giới thiệu về việc uỷ quyền (cùng với một số phương thức xác thực)
Để gửi yêu cầu tới các API, ứng dụng của bạn cần có quyền truy cập thích hợp. Xác thực, một từ tương tự, mô tả thông tin đăng nhập. Bạn xác thực chính mình khi đăng nhập vào Tài khoản Google bằng thông tin đăng nhập và mật khẩu. Sau khi xác thực, bước tiếp theo là liệu bạn có (hay nói đúng hơn là mã của bạn) có được uỷ quyền để truy cập vào dữ liệu hay không, chẳng hạn như các tệp blob trên Cloud Storage hoặc các tệp cá nhân của người dùng trên Google Drive.
Các API của Google hỗ trợ nhiều loại hình uỷ quyền, nhưng một trong những cách phổ biến nhất đối với người dùng API Google Workspace là uỷ quyền người dùng vì ứng dụng mẫu trong lớp học lập trình này truy cập vào dữ liệu thuộc về người dùng cuối. Những người dùng cuối đó phải cấp quyền cho ứng dụng của bạn truy cập vào dữ liệu của họ. Tức là mã của bạn phải lấy thông tin đăng nhập OAuth2 của tài khoản người dùng.
Để lấy thông tin đăng nhập OAuth2 cho việc uỷ quyền của người dùng, hãy quay lại trình quản lý API rồi chọn "Credentials" (Thông tin xác thực) trên bảng điều hướng bên trái:
Khi truy cập vào đó, bạn sẽ thấy tất cả thông tin đăng nhập của mình trong ba phần riêng biệt:
Đầu tiên là dành cho khoá API, ID ứng dụng khách OAuth 2.0 thứ hai và tài khoản dịch vụ OAuth2 cuối cùng mà chúng tôi đang sử dụng ở giữa.
Đang tạo thông tin xác thực
Từ trang Thông tin xác thực, hãy nhấp vào nút + Tạo thông tin xác thực ở trên cùng. Sau đó, một hộp thoại sẽ xuất hiện để bạn chọn "Mã ứng dụng khách OAuth":
Trên màn hình tiếp theo, bạn có 2 thao tác: định cấu hình "màn hình yêu cầu đồng ý" cấp phép của ứng dụng và chọn loại ứng dụng:
Nếu chưa thiết lập màn hình xin phép, bạn sẽ thấy cảnh báo trong bảng điều khiển và cần thiết lập ngay bây giờ. (Bỏ qua các bước tiếp theo này nếu màn hình xin phép của bạn đã được thiết lập.)
Màn hình xin phép bằng Oauth
Nhấp vào "Định cấu hình màn hình đồng ý" nơi bạn chọn một ứng dụng "Bên ngoài" ứng dụng (hoặc "Nội bộ" nếu bạn là khách hàng Google Workspace [trước đây là "Google Workspace"]):
Xin lưu ý rằng để phục vụ mục đích của bài tập này, bạn không cần chọn giải pháp nào vì bạn sẽ không xuất bản mẫu của lớp học lập trình của mình. Hầu hết mọi người sẽ chọn "Bên ngoài" được đưa đến một màn hình phức tạp hơn, nhưng bạn thực sự chỉ cần hoàn tất "Tên ứng dụng" trường ở trên cùng:
Hiện tại, bạn chỉ cần đặt tên ứng dụng. Vì vậy, hãy chọn một người phản ánh lớp học lập trình bạn đang thực hiện sau đó nhấp vào Save (Lưu).
Tạo mã ứng dụng khách OAuth (xác thực tài khoản người dùng)
Bây giờ, hãy quay lại thẻ Thông tin xác thực để tạo Mã ứng dụng khách OAuth2. Tại đây, bạn sẽ thấy nhiều mã ứng dụng khách OAuth mà bạn có thể tạo:
Chúng tôi đang phát triển một công cụ dòng lệnh, đó là Other (Khác), hãy chọn công cụ đó sau đó nhấp vào nút Create (Tạo). Chọn tên mã ứng dụng khách phản ánh ứng dụng mà bạn đang tạo hoặc chỉ cần lấy tên mặc định, thường là "Ứng dụng khác N".
Đang lưu thông tin đăng nhập
- Một hộp thoại có thông tin xác thực mới sẽ xuất hiện; nhấp vào OK để đóng
- Quay lại trang Thông tin xác thực, di chuyển xuống phần "Mã ứng dụng khách OAuth2" hãy tìm và nhấp vào biểu tượng tải xuống
ở ngoài cùng bên phải của ID ứng dụng khách mới tạo của bạn.
- Thao tác này sẽ mở hộp thoại để lưu tệp có tên
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
, có thể nằm trong thư mục Downloads (Tệp đã tải xuống). Bạn nên rút ngắn thành tên dễ dùng hơn nhưclient_secret.json
(tên mà ứng dụng mẫu sử dụng), sau đó lưu tên này vào thư mục/thư mục mà bạn sẽ tạo ứng dụng mẫu trong lớp học lập trình này.
Tóm tắt
Khi có thông tin đăng nhập, bạn đã sẵn sàng truy cập vào API Drive từ ứng dụng của mình. Tuy nhiên, xin lưu ý rằng mục đích của mã ứng dụng khách OAuth là người dùng phải cấp cho ứng dụng của bạn quyền truy cập vào dữ liệu của họ trong Google Drive.
LƯU Ý: Bạn có thể xem thêm thông tin về việc tạo dự án, bật API và lấy thông tin xác thực theo cách thủ công, tức là không sử dụng "trình hướng dẫn" ở trên, vẫn có sẵn sau khi kết thúc lớp học lập trình này để nghiên cứu thêm.
8. Đang hiện các tệp của bạn trên Drive và ứng dụng thư mục
Bất kể trong môi trường phát triển cục bộ hay trong Cloud Shell, trong cùng thư mục chứa tệp thông tin xác thực client_id.json
, hãy tạo một tệp Python mới có tên drive_list.py
rồi thêm các dòng mã bên dưới:
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
Cấu trúc ứng dụng
Ứng dụng này có ba phần chính:
- Nhập Python để tích hợp chức năng của thư viện
- Lấy thông tin đăng nhập của ứng dụng
- Tìm nạp tệp và tên thư mục và Các loại MIME trong Google Drive của người dùng và màn hình
LƯU Ý: Để nghiên cứu thêm, bạn có thể tìm hiểu kỹ hơn về mã này và xem nội dung giải thích từng dòng sau khi kết thúc lớp học lập trình này.
Chạy ứng dụng
Đặt tên tệp này có dạng drive_list.py
. Vào lần đầu tiên bạn thực thi tập lệnh, tập lệnh sẽ không có quyền truy cập vào các tệp của người dùng trên Drive (của bạn). Kết quả sẽ có dạng như sau khi quá trình thực thi bị tạm dừng:
$ python3 ./drive_list.py /usr/local/lib/python3.6/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory warnings.warn(_MISSING_FILE_MESSAGE.format(filename)) Your browser has been opened to visit: https://accounts.google.com/o/oauth2/auth?client_id=LONG-STRING.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
Từ môi trường phát triển cục bộ
Tập lệnh dòng lệnh bị tạm dừng khi một cửa sổ trình duyệt mở ra và hiển thị cho bạn hộp thoại cấp quyền OAuth2:
Đây là khi ứng dụng yêu cầu người dùng cấp các quyền mà mã đang yêu cầu (thông qua biến SCOPES
). Trong trường hợp này, họ có thể xem siêu dữ liệu tệp từ Google Drive của người dùng. Có, trong mã của bạn, các phạm vi quyền này xuất hiện dưới dạng URI, nhưng được dịch sang ngôn ngữ được ngôn ngữ của bạn chỉ định trong cửa sổ hộp thoại quy trình OAuth2. Người dùng phải cấp quyền rõ ràng cho(các) quyền được yêu cầu, nếu không thì "quy trình chạy" một phần của mã sẽ gửi một ngoại lệ và tập lệnh không xử lý thêm.
LƯU Ý: Một số người dùng có nhiều trình duyệt và yêu cầu uỷ quyền có thể bật lên trên một trình duyệt không được ưa dùng. Nếu trường hợp đó xảy ra, bạn chỉ cần sao chép toàn bộ URL từ cửa sổ trình duyệt bạn không muốn sử dụng và dán vào thanh địa chỉ của trình duyệt bạn muốn sử dụng.
Của Cloud Shell
Nếu lúc đó bạn không chú ý và chạy chương trình trong Cloud Shell, thì sẽ không có cửa sổ trình duyệt nào mở ra và khiến bạn bị mắc kẹt. Nhận thấy thông báo chẩn đoán ở dưới cùng là dành cho bạn... thông báo này:
If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
Khi chạy theo cách này, bạn sẽ nhận được kết quả sau:
$ python3 drive_list.py --noauth_local_webserver /usr/local/lib/python3.7/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory warnings.warn(_MISSING_FILE_MESSAGE.format(filename)) Go to the following link in your browser: https://accounts.google.com/o/oauth2/auth?client_id=xxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code Enter verification code:
Làm theo hướng dẫn và chuyển đến thẻ trình duyệt khác có URL đó, bạn sẽ nhận được trải nghiệm gần giống với những gì đã mô tả ở trên đối với môi trường phát triển cục bộ. Điểm khác biệt chính là ở cuối bạn sẽ thấy thêm một màn hình có mã xác minh để nhập vào Cloud Shell:
Cắt và dán mã này vào cửa sổ dòng lệnh.
Tóm tắt
Sau khi người dùng nhấp vào cho phép và/hoặc mã xác minh được dán vào lời nhắc, ứng dụng sẽ (tiếp tục) chạy. Vì vậy, bạn sẽ thấy dữ liệu đầu ra bao gồm các tệp/thư mục trên Drive và loại MIME của chúng. Dưới đây là ví dụ từ một trong các tài khoản thử nghiệm của chúng tôi:
$ python3 ./drive_list.py Travel expenses application/vnd.google-apps.spreadsheet Gmail Add-ons codelab application/vnd.google-apps.script Google Workspace Developer Intro application/vnd.google-apps.presentation Baseball Sheets application/vnd.google-apps.folder My Resume application/vnd.google-apps.document . . .
Lưu ý trong các lần thực thi liên tiếp rằng bạn không còn bị nhắc uỷ quyền nữa (vì thư viện xác thực đã lưu vào bộ nhớ đệm) và bạn sẽ đi thẳng đến dữ liệu đầu ra. Lần đầu tiên bạn thấy tài liệu của mình trong thiết bị thanh toán có thú vị không? Chúng tôi nghĩ vậy!
9. Kết luận
Giờ đây, bạn đã sẵn sàng tìm hiểu thêm các tính năng về API Drive hoặc khám phá các API khác của Google Workspace (Gmail, Google Tài liệu, Trang tính, Trang trình bày, Lịch) và các API khác của Google (Maps, Analytics, YouTube, v.v.). Chúc mừng bạn đã xem đến cuối khoá học!
Mã có trong lớp học lập trình này cũng có tại kho lưu trữ GitHub tại github.com/googlecodelabs/gsuite-apis-intro. (Chúng tôi sẽ cố gắng đảm bảo lớp học lập trình này luôn đồng bộ với kho lưu trữ.) Bạn đã sẵn sàng tiếp tục chưa? Dưới đây là nhiều tài nguyên bạn có thể truy cập để tìm hiểu kỹ hơn về tài liệu được đề cập trong lớp học lập trình này hoặc nếu bạn muốn mở rộng tâm trí và khám phá các cách truy cập công nghệ của Google khác theo phương thức lập trình.
Như đã gợi ý trước đó, nếu bạn không phải là nhà phát triển Python bình thường, chúng tôi mời bạn thiết lập lại ví dụ của lớp học lập trình này bằng ngôn ngữ phát triển mà bạn yêu thích. Bạn có thể tìm thư viện ứng dụng cho các ngôn ngữ được hỗ trợ tại đây.
Nghiên cứu bổ sung
Giờ đây, khi bạn đã có được một số kinh nghiệm với API Drive, sau đây là một số bài tập được đề xuất để phát triển thêm kỹ năng của bạn:
- Tệp ZIP: Viết một ứng dụng sao lưu nhiều tệp lưu trữ ZIP vào Drive, giải nén các tệp đó một cách nhanh chóng để mỗi tên tệp ZIP là tên của thư mục chứa các tệp đó. TÍN DỤNG BỔ SUNG: hỗ trợ tệp lưu trữ ZIP đệ quy trong các tệp ZIP khác với các thư mục trên Drive được nhúng bên trong các thư mục khác. Nếu bạn từ bỏ, hãy xem ứng dụng mẫu Node.js này.
- Album ảnh: Viết phần đầu của công cụ tạo album ảnh để tải nhiều hình ảnh lên Google Drive, sắp xếp chúng vào các thư mục riêng biệt theo dấu thời gian và định vị vị trí. TÍN DỤNG BỔ SUNG: tìm thư viện thao tác hình ảnh nguồn mở và ghép tất cả ảnh vào từng thư mục để thể hiện các sự kiện bạn có thể đã trải qua (một chuyến đi, một bữa tối, v.v.).
- Khám phá GCP: Viết một ứng dụng kết nối Google Workspace và Google Cloud Platform (GCP). Viết một công cụ cung cấp tệp hình ảnh dự phòng từ Google Drive vào Google Cloud Storage (GCS), một công cụ khác là "lưu trữ tệp trên đám mây" Cloud. Dù bạn có tin hay không, việc sử dụng GCS sẽ đơn giản hơn Drive vì có các thư viện ứng dụng nâng cao.
- Phân tích và ghi lại: Mở rộng giải pháp của bạn lên vị trí 3 bằng cách phân tích từng hình ảnh được sao lưu bằng cách chuyển hình ảnh đó tới Google Cloud Vision API và tải (3, 5, 10) "nhãn" hàng đầu những gì API nhìn thấy trong những hình ảnh đó. Đối với mỗi hình ảnh, hãy viết một hàng trong Google Trang tính chứa bản phân tích từ Cloud Vision cũng như vị trí được sao lưu trong GCS. Nếu bạn đã từ bỏ, hãy xem lớp học lập trình Python này.
10. Tài nguyên khác
Tài liệu
- Tài liệu về API Google Drive (API REST và SDK/API gốc của Android)
- Tài liệu khác về các API của Google Workspace
- Tài liệu khác về API của Google
- Thư viện ứng dụng API Google
- Tài liệu về OAuth2
Video có liên quan và video chung
- Tạo dự án Google API mới ( bài đăng trên blog và video)
- Đánh giá mã nguyên mẫu uỷ quyền Python ( video)
- Liệt kê các tệp của bạn trong Google Drive ( video, bài đăng trên blog)
- Thư viện video của API Google Drive
- Loạt video Launchpad Online (tiền thân của...)
- Loạt video Chương trình dành cho nhà phát triển của Google Workspace
Tin tức và các bản cập nhật
- Blog dành cho nhà phát triển Google Workspace
- Twitter dành cho nhà phát triển Google Workspace (@GSuiteDevs)
- Bản tin hằng tháng dành cho nhà phát triển Google Workspace
Lớp học lập trình khác
Cơ bản
- [Apps Script] Giới thiệu về Google Apps Script
Bậc trung
- [Apps Script] Công cụ dòng lệnh CLASP Apps Script
- [Apps Script] Tiện ích bổ sung dành cho Gmail
- [Apps Script] Tiện ích bổ sung dành cho Tài liệu và API ngôn ngữ tự nhiên của GCP
- [Apps Script] Khung bot trong Hangouts Chat
- [REST API] Công cụ báo cáo tuỳ chỉnh (API Trang tính)
- [API REST] Trình tạo trang trình bày tuỳ chỉnh cho công cụ phân tích BigQuery của giấy phép GitHub (API Trang trình bày và BigQuery)
Nâng cao
- [API REST] Quy trình xử lý hình ảnh trên Cloud (Drive, Cloud Storage, Cloud Vision, API Trang tính)
Ứng dụng tham khảo
- Trình chuyển đổi đánh dấu sang Google Trang trình bày (API REST của Trang trình bày)
11. *Giải thích chi tiết về ứng dụng
Bạn có thể dùng phần không bắt buộc này để tự nghiên cứu sau khi phiên đào tạo kết thúc nhằm bổ sung thông tin còn thiếu nếu có hoặc để nghiên cứu thêm.
Nhập Python để tích hợp chức năng của thư viện
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
- Câu lệnh
import
đầu tiên cho phép mã này chạy trên Python 2 – nó có thể bị bỏ hoàn toàn nếu bạn chỉ sử dụng Python 3. - Một nguyên tắc về kiểu Python là tách biệt thư viện tiêu chuẩn và dữ liệu nhập mô-đun của bên thứ ba. Đây là mục đích của dòng trống.
- Ba lệnh nhập tiếp theo mang đến các lớp cần thiết & các hàm từ thư viện ứng dụng API của Google... tất cả đều cần thiết để chúng ta viết ứng dụng này. Tóm lại, sau đây là chức năng của chúng:
googleapiclient
tập trung vào việc kết nối với API của Googlehttplib2
cung cấp một ứng dụng HTTP để ứng dụng dùngoauth2client
giúp chúng tôi quản lý thông tin xác thực OAuth2
Cấp quyền và thu thập thông tin xác thực cho ứng dụng
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
- Ứng dụng
SCOPES
là các quyền mà một ứng dụng sẽ yêu cầu người dùng chạy ứng dụng đó. Để đảm bảo an toàn cho dữ liệu người dùng, các ứng dụng không thể chạy nếu không được cấp quyền - Phương pháp hay nhất là sử dụng các quyền hạn chế nhất mà ứng dụng của bạn cần để hoạt động. Tại sao?
- Liệu một ứng dụng yêu cầu một lượng lớn các quyền khi bạn cài đặt hoặc chạy ứng dụng đó có gây khó chịu hay không? Bạn thử đoán xem nhé? Giờ thì bạn đang ở thế giới khác và yêu cầu người dùng cấp tất cả các quyền này. Việc sử dụng các phạm vi hạn chế hơn sẽ giúp người dùng cảm thấy thoải mái hơn khi cài đặt ứng dụng của bạn vì bạn đang yêu cầu ít quyền truy cập hơn.
- Hầu hết tất cả các phạm vi đều giống như URL dài, và phạm vi siêu dữ liệu trên Drive cũng không phải là ngoại lệ.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
- Các ứng dụng cần có mã thông báo để giao tiếp với máy chủ của Google. Những mã thông báo hợp lệ do Google tạo ra sẽ được lưu trong tệp lưu trữ mã thông báo (
storage.json
). Nếu không lưu những mã thông báo này, bạn sẽ phải uỷ quyền lại ứng dụng mỗi lần chạy ứng dụng.
store = file.Storage('storage.json')
- Trước tiên, ứng dụng này sẽ kiểm tra xem chúng ta đã có thông tin xác thực hợp lệ trong bộ nhớ hay chưa (xem câu lệnh có điều kiện
if
).
creds = store.get()
if not creds or creds.invalid:
- Nếu không có thông tin đăng nhập hoặc thông tin đăng nhập đã hết hạn, bạn phải tạo một quy trình uỷ quyền mới [thông qua
oauth2client.client.flow_from_clientsecrets()
] từ mã ứng dụng khách OAuth và bí mật trong tệpclient_id.json
mà bạn đã tải xuống].
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
- Sau khi có một luồng, ứng dụng của bạn cần thực thi để hiển thị màn hình quyền OAuth2 cho người dùng [thông qua
oauth2client.tools.run_flow()
] được mô tả và minh họa ở trên.
creds = tools.run_flow(flow, store)
- Khi nhấp vào Cho phép, người dùng đồng ý cho phép ứng dụng của bạn truy cập vào siêu dữ liệu tệp trên Google Drive. Sau đó, các máy chủ của Google sẽ trả về mã thông báo để truy cập vào API. Các kết quả này được trả về dưới dạng
creds
và lưu vào bộ nhớ đệm trong tệpstorage.json
. - Tại thời điểm này, ứng dụng của bạn hiện đã có thông tin đăng nhập hợp lệ để thực hiện lệnh gọi API. Việc gọi
googleapiclient.discovery.build()
sẽ tạo một điểm cuối dịch vụ cho API bạn đang sử dụng. - Để sử dụng
build()
, hãy chuyển vào tên API ('drive'
) & phiên bản mong muốn (hiện là'v3'
). - Thông số cuối cùng là một ứng dụng HTTP để sử dụng cho các lệnh gọi API được mã hoá.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
Tìm nạp và hiển thị 100 tệp/thư mục đầu tiên trên Drive và MIMEtypes)
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- Dòng mã tiếp theo gọi phương thức
list()
trong bộ sưu tậpfiles()
để API Drive tạo yêu cầu và yêu cầu này được gọi ngay lập tức bằngexecute()
. Mộtdict
Python được trả về mà từ đó chúng ta yêu cầu khoá'files'
để lấy tệp 100 & tên thư mục từ Google Drive của người dùng (hoặc nhỏ hơn nếu bạn có ít tệp hơn). - Tại sao lại là 100? Đó là giá trị mặc định của
DRIVE.files().list()
. Nếu bạn muốn thay đổi số lượng này, giả sử chỉ có 10 tệp hoặc 1.000 tệp, hãy thêm tham sốpageSize
vào yêu cầu của bạn:DRIVE.files().list(pageSize=10)
. Đây là tài liệu để biết thêm các lựa chọn khác. - Phần cuối cùng của tập lệnh lặp lại qua từng tệp và hiển thị tên cũng như MIME của tệp.
Giờ thì bạn đã viết được ứng dụng đầu tiên sử dụng API REST của Google... xin chúc mừng! Ngoài mã nhập và mã uỷ quyền, tập lệnh này thực sự chỉ là một vài dòng mã (những gì bạn thấy ở trên). Hầu hết API của Google hoạt động theo cách tương tự nhau và bạn chỉ cần tạo điểm cuối dịch vụ cho mỗi điểm cuối mà bạn muốn sử dụng.
Sử dụng nhiều API Google trong một ứng dụng
Có, bạn chắc chắn có thể sử dụng nhiều API trong cùng một ứng dụng! Dưới đây là một đoạn mã Python cho một ứng dụng sử dụng lại cùng một ứng dụng HTTP và tạo điểm cuối dịch vụ cho ba API Google (có, cũng như với 3 SCOPES
khác nhau):
SCOPES = (
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/spreadsheets.readonly',
'https://www.googleapis.com/auth/presentations',
)
. . .
HTTP = creds.authorize(Http())
DRIVE = discovery.build('drive', 'v3', http=HTTP)
SHEETS = discovery.build('sheets', 'v4', http=HTTP)
SLIDES = discovery.build('slides', 'v1', http=HTTP)
Chúng tôi cho rằng mã này có thể là một phần của ứng dụng tạo nhiều bản trình bày (API Trang trình bày) dựa trên dữ liệu bảng tính (API Trang tính) và sử dụng mẫu trang trình bày được sao chép (API Drive) cho mỗi bản trình bày được tạo. Mặc dù ứng dụng này không tồn tại, nhưng bạn có thể tạo một ứng dụng tương tự bằng cách sử dụng hai mẫu hiện có mà nhóm Google Workspace đã tạo làm thành phần:
- Thay thế văn bản và hình ảnh trong trang trình bày ( bài đăng trên blog và video) — sử dụng API Drive để sao chép bản mẫu trang trình bày rồi sử dụng API Trang trình bày để thay đổi văn bản và phần giữ chỗ hình ảnh
- Tạo trang trình bày từ dữ liệu bảng tính ( bài đăng trên blog và video) — đọc dữ liệu từ bảng tính (API Trang tính) và tạo trang trình bày (API Trang trình bày) dựa trên dữ liệu đó
Thử thách của bạn: xây dựng ứng dụng đó!
12. *Cách sử dụng nâng cao cho bảng điều khiển dành cho nhà phát triển
Trong phần không bắt buộc này, chúng tôi sẽ mô tả cách tạo dự án trong devconsole, bật API và lấy thông tin đăng nhập, mà không cần dùng trình hướng dẫn như bên trên trong lớp học lập trình. Hướng dẫn này dành cho những người dùng trung cấp đủ thoải mái để tự thực hiện hoặc muốn tìm hiểu cách thực hiện.
Chỉ định dự án trong bảng điều khiển Cloud
Bất cứ khi nào viết ứng dụng bằng API của Google, bạn cần phải có một dự án. Bạn có thể sử dụng lại dự án hiện có hoặc tạo dự án mới. Quá trình đó diễn ra trong Cloud Console. Một số lớp học lập trình cung cấp đường liên kết thần kỳ (chẳng hạn như trình hướng dẫn thiết lập) giúp bạn nhanh chóng thực hiện mà bỏ qua nhiều bước cần thiết. Tuy nhiên, không phải tất cả các nguyên tắc này đều như vậy, vì vậy đây chỉ là những hướng dẫn chung về cách tạo dự án.
Bạn có thể tạo dự án từ hầu hết các màn hình trong Cloud Console, miễn là bạn đăng nhập bằng thông tin đăng nhập Google của mình và thấy một dự án kéo xuống ở đầu bảng điều khiển. Lưu ý rằng hầu hết các ảnh chụp màn hình ở đây được lấy từ Trình quản lý API, còn gọi là Developers Console (bạn có thể dễ dàng truy cập bằng cách nhấp vào "Trình quản lý API" trong thanh điều hướng bên trái hoặc trỏ trực tiếp trình duyệt của bạn đến console.developers.google.com.
- Nếu chưa có dự án nào, có thể bạn sẽ được chuyển đến...
- Trang tổng quan:
- trang Thư viện:
- hoặc một trang hoàn toàn trống:
Nếu trường hợp thứ 3 này xảy ra với bạn, bạn chỉ cần làm mới trình duyệt để được chuyển đến trang Thư viện.
- Cho dù bạn đang ở trang Trang tổng quan hay trang Thư viện, hãy nhấp vào bộ chọn dự án ở đầu trang:
- Tiếp theo, bạn sẽ thấy hộp thoại bộ chọn. Nhấp vào biểu tượng "+" ở phía bên phải để tạo một dự án mới:
- Sau khi bạn nhấp vào dấu "+", trang New Project (Dự án mới) sẽ xuất hiện. Theo mặc định, tất cả tài khoản người dùng cá nhân sẽ nhận được 12 dự án. Trước khi tạo dự án đầu tiên, bạn sẽ phải chấp nhận Điều khoản dịch vụ API của Google:
Sau khi bạn hoàn tất việc này, các câu hỏi về việc chào mời qua email và về Điều khoản dịch vụ sẽ biến mất khi bạn tạo các dự án trong tương lai:
5. Nếu trước đây bạn đã tạo ít nhất một dự án thì sau khi đăng nhập, bạn sẽ được đưa đến trang tổng quan của dự án gần đây nhất mà bạn đã thực hiện. Từ đó, hãy tạo một dự án mới theo cách bạn muốn Chọn dự án > +. 6. Sau khi tạo xong dự án mới, bạn sẽ quay lại Trang tổng quan:
Hiện tại, bạn đã tạo thành công một dự án và sẵn sàng tiếp tục bằng cách chọn các API mà bạn muốn sử dụng cho dự án của mình.
Bật Google API
Trước khi bạn có thể bắt đầu sử dụng các API của Google, bạn phải bật các API đó. Ví dụ bên dưới cho thấy những việc bạn sẽ làm để bật Cloud Vision API. Trong lớp học lập trình này, bạn có thể đang sử dụng một hoặc nhiều API và nên làm theo các bước tương tự để bật các API đó trước khi sử dụng.
Của Cloud Shell
Khi sử dụng Cloud Shell, bạn có thể bật API này bằng cách dùng lệnh sau:
gcloud services enable vision.googleapis.com
Trên Cloud Console
Bạn cũng có thể bật Vision API trong Trình quản lý API. Trong Cloud Console, hãy chuyển đến Trình quản lý API rồi chọn "Thư viện".
Trong thanh tìm kiếm, hãy bắt đầu nhập "tầm nhìn" rồi chọn Vision API khi nó xuất hiện. Giao diện có thể có dạng như sau khi bạn nhập:
Chọn Cloud Vision API để nhận hộp thoại mà bạn thấy bên dưới, sau đó nhấp vào "Bật" nút:
Chi phí
Mặc dù nhiều API của Google có thể được sử dụng mà không mất phí nhưng việc sử dụng GCP (sản phẩm và API) không phải là miễn phí. Khi bật Vision API (như mô tả ở trên), bạn có thể được yêu cầu cung cấp một tài khoản thanh toán đang hoạt động. Người dùng phải tham khảo thông tin về giá của Vision API trước khi bật. Xin lưu ý rằng một số sản phẩm nhất định của Google Cloud Platform (GCP) có tính năng "Luôn miễn phí" mà bạn phải vượt quá cấp này để được thanh toán. Theo mục đích của lớp học lập trình này, mỗi lệnh gọi đến Vision API sẽ được tính vào cấp miễn phí đó và miễn là bạn không vượt quá giới hạn tổng của mã đó (trong vòng mỗi tháng), bạn sẽ không phải chịu bất kỳ khoản phí nào.
Một số API của Google, ví dụ: Google Workspace được gói thuê bao hằng tháng tính mức sử dụng. Vì vậy, bạn sẽ không phải thanh toán trực tiếp cho việc sử dụng các API Gmail, Google Drive, Lịch, Tài liệu, Trang tính và Trang trình bày. Các sản phẩm khác nhau của Google được tính phí theo cách khác nhau, vì vậy, hãy đảm bảo bạn tham khảo tài liệu của API để biết thông tin đó.
Tóm tắt
Trong lớp học lập trình này, bạn chỉ cần bật API Google Drive. Vì vậy, hãy làm theo hướng dẫn ở trên rồi tìm kiếm "Drive". Tiếp tục tiến hành sau khi bật tính năng này.
Cho phép các yêu cầu API (uỷ quyền của người dùng)
Giới thiệu về việc uỷ quyền (cùng với một số phương thức xác thực)
Để gửi yêu cầu tới các API, ứng dụng của bạn cần có quyền truy cập thích hợp. Xác thực, một từ tương tự, mô tả thông tin đăng nhập. Bạn xác thực chính mình khi đăng nhập vào Tài khoản Google bằng thông tin đăng nhập và mật khẩu. Sau khi xác thực, bước tiếp theo là liệu bạn có (hay nói đúng hơn là mã của bạn) có được uỷ quyền để truy cập vào dữ liệu hay không, chẳng hạn như các tệp blob trên Cloud Storage hoặc các tệp cá nhân của người dùng trên Google Drive.
Các API của Google hỗ trợ nhiều loại hình uỷ quyền, nhưng một trong những cách phổ biến nhất đối với người dùng API Google Workspace là uỷ quyền người dùng vì ứng dụng mẫu trong lớp học lập trình này truy cập vào dữ liệu thuộc về người dùng cuối. Những người dùng cuối đó phải cấp quyền cho ứng dụng của bạn truy cập vào dữ liệu của họ. Tức là mã của bạn phải lấy thông tin đăng nhập OAuth2 của tài khoản người dùng.
Để lấy thông tin đăng nhập OAuth2 cho việc uỷ quyền của người dùng, hãy quay lại trình quản lý API rồi chọn "Credentials" (Thông tin xác thực) trên bảng điều hướng bên trái:
Khi truy cập vào đó, bạn sẽ thấy tất cả thông tin đăng nhập của mình trong ba phần riêng biệt:
Đầu tiên là dành cho khoá API, ID ứng dụng khách OAuth 2.0 thứ hai và tài khoản dịch vụ OAuth2 cuối cùng mà chúng tôi đang sử dụng ở giữa.
Đang tạo thông tin xác thực
Từ trang Thông tin xác thực, hãy nhấp vào nút + Tạo thông tin xác thực ở trên cùng. Sau đó, một hộp thoại sẽ xuất hiện để bạn chọn "Mã ứng dụng khách OAuth":
Trên màn hình tiếp theo, bạn có 2 thao tác: định cấu hình "màn hình yêu cầu đồng ý" cấp phép của ứng dụng và chọn loại ứng dụng:
Nếu chưa thiết lập màn hình xin phép, bạn sẽ thấy cảnh báo trong bảng điều khiển và cần thiết lập ngay bây giờ. (Bỏ qua các bước tiếp theo này nếu màn hình xin phép của bạn đã được thiết lập.)
Màn hình xin phép bằng Oauth
Nhấp vào "Định cấu hình màn hình đồng ý" nơi bạn chọn một ứng dụng "Bên ngoài" ứng dụng (hoặc "Nội bộ" nếu bạn là khách hàng Google Workspace):
Xin lưu ý rằng để phục vụ mục đích của bài tập này, bạn không cần chọn giải pháp nào vì bạn sẽ không xuất bản mẫu của lớp học lập trình của mình. Hầu hết mọi người sẽ chọn "Bên ngoài" được đưa đến một màn hình phức tạp hơn, nhưng bạn thực sự chỉ cần hoàn tất "Tên ứng dụng" trường ở trên cùng:
Hiện tại, bạn chỉ cần đặt tên ứng dụng. Vì vậy, hãy chọn một người phản ánh lớp học lập trình bạn đang thực hiện sau đó nhấp vào Save (Lưu).
Tạo mã ứng dụng khách OAuth (xác thực tài khoản người dùng)
Bây giờ, hãy quay lại thẻ Thông tin xác thực để tạo Mã ứng dụng khách OAuth2. Tại đây, bạn sẽ thấy nhiều mã ứng dụng khách OAuth mà bạn có thể tạo:
Chúng tôi đang phát triển một công cụ dòng lệnh, đó là Other (Khác), hãy chọn công cụ đó sau đó nhấp vào nút Create (Tạo). Chọn tên mã ứng dụng khách phản ánh ứng dụng mà bạn đang tạo hoặc chỉ cần lấy tên mặc định, thường là "Ứng dụng khác N".
Đang lưu thông tin đăng nhập
- Một hộp thoại có thông tin xác thực mới sẽ xuất hiện; nhấp vào OK để đóng
- Quay lại trang Thông tin xác thực, di chuyển xuống phần "Mã ứng dụng khách OAuth2" hãy tìm và nhấp vào biểu tượng tải xuống
ở ngoài cùng bên phải của ID ứng dụng khách mới tạo của bạn.
- Thao tác này sẽ mở hộp thoại để lưu tệp có tên
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
, có thể nằm trong thư mục Downloads (Tệp đã tải xuống). Bạn nên rút ngắn thành tên dễ dùng hơn nhưclient_secret.json
(tên mà ứng dụng mẫu sử dụng), sau đó lưu tên này vào thư mục/thư mục mà bạn sẽ tạo ứng dụng mẫu trong lớp học lập trình này.