OAuth 2.0 cho ứng dụng dành cho thiết bị di động và máy tính

Tài liệu này giải thích cách các ứng dụng được cài đặt trên các thiết bị như điện thoại, máy tính bảng và máy tính sử dụng các điểm cuối OAuth 2.0 của Google để cho phép truy cập vào YouTube Analytics API hoặc YouTube Reporting API.

OAuth 2.0 cho phép người dùng chia sẻ dữ liệu cụ thể với một ứng dụng trong khi vẫn giữ bí mật tên người dùng, mật khẩu và các thông tin khác. Ví dụ: một ứng dụng có thể sử dụng OAuth 2.0 để được cấp quyền truy xuất dữ liệu YouTube Analytics của một kênh.

Các ứng dụng đã cài đặt được phân phối cho từng thiết bị và giả định rằng những ứng dụng này không thể giữ bí mật. Chúng có thể truy cập vào các API của Google trong khi người dùng đang ở trong ứng dụng hoặc khi ứng dụng đang chạy ở chế độ nền.

Quy trình uỷ quyền này tương tự như quy trình được dùng cho các ứng dụng máy chủ web. Điểm khác biệt chính là các ứng dụng đã cài đặt phải mở trình duyệt hệ thống và cung cấp một URI chuyển hướng cục bộ để xử lý các phản hồi từ máy chủ uỷ quyền của Google.

Thư viện và mẫu

Đối với ứng dụng di động, bạn nên dùng phiên bản mới nhất của thư viện gốc Dịch vụ nhận dạng của Google cho Android và thư viện gốc Đăng nhập bằng Google cho iOS. Các thư viện này xử lý việc uỷ quyền cho người dùng và dễ triển khai hơn so với giao thức cấp thấp được mô tả ở đây.

Đối với các ứng dụng chạy trên những thiết bị không hỗ trợ trình duyệt hệ thống hoặc có khả năng đầu vào hạn chế, chẳng hạn như TV, máy chơi trò chơi, máy ảnh hoặc máy in, hãy xem OAuth 2.0 cho TV và thiết bị hoặc Đăng nhập trên TV và thiết bị đầu vào hạn chế.

Điều kiện tiên quyết

Bật API cho dự án của bạn

Mọi ứng dụng gọi API Google đều cần bật các API đó trong API Console.

Cách bật API cho dự án:

  1. Open the API Library trong Google API Console.
  2. If prompted, select a project, or create a new one.
  3. Sử dụng trang Thư viện để tìm và bật YouTube Analytics API cũng như API Báo cáo của YouTube. Nhiều ứng dụng truy xuất dữ liệu trong YouTube Analytics cũng tương tác với YouTube Data API. Tìm mọi API khác mà ứng dụng của bạn sẽ sử dụng và bật cả những API đó.

Tạo thông tin xác thực uỷ quyền

Mọi ứng dụng sử dụng OAuth 2.0 để truy cập vào các API của Google đều phải có thông tin uỷ quyền để xác định ứng dụng với máy chủ OAuth 2.0 của Google. Các bước sau đây giải thích cách tạo thông tin đăng nhập cho dự án của bạn. Sau đó, các ứng dụng của bạn có thể sử dụng thông tin đăng nhập để truy cập vào các API mà bạn đã bật cho dự án đó.

  1. Go to the Credentials page.
  2. Nhấp vào Tạo ứng dụng.
  3. Các phần sau đây mô tả các loại ứng dụng mà máy chủ uỷ quyền của Google hỗ trợ. Chọn loại ứng dụng khách được đề xuất cho ứng dụng của bạn, đặt tên cho ứng dụng khách OAuth và đặt các trường khác trong biểu mẫu cho phù hợp.
Android
  1. Chọn loại ứng dụng Android.
  2. Nhập tên cho ứng dụng OAuth. Tên này xuất hiện trên của dự án để xác định ứng dụng khách.
  3. Nhập tên gói của ứng dụng Android. Giá trị này được xác định trong thuộc tính package của phần tử <manifest> trong tệp kê khai ứng dụng.
  4. Nhập dấu vân tay chứng chỉ ký SHA-1 của bản phân phối ứng dụng.
    • Nếu ứng dụng của bạn sử dụng tính năng ký ứng dụng của Google Play, hãy sao chép vân tay SHA-1 từ trang ký ứng dụng của Play Console.
    • Nếu bạn quản lý kho khoá và khoá ký của riêng mình, hãy sử dụng tiện ích keytool có trong Java để in thông tin chứng chỉ ở định dạng dễ đọc. Sao chép giá trị SHA1 trong phần Certificate fingerprints của đầu ra keytool. Hãy xem phần Xác thực ứng dụng trong tài liệu về API Google cho Android để biết thêm thông tin.
  5. (Không bắt buộc) Xác minh quyền sở hữu ứng dụng Android của bạn.
  6. Nhấp vào Tạo.
iOS
  1. Chọn loại ứng dụng iOS.
  2. Nhập tên cho ứng dụng OAuth. Tên này xuất hiện trên của dự án để xác định ứng dụng khách.
  3. Nhập giá trị nhận dạng gói cho ứng dụng của bạn. Mã nhận dạng gói là giá trị của khoá CFBundleIdentifier trong tệp tài nguyên danh sách thuộc tính thông tin của ứng dụng (info.plist). Giá trị này thường xuất hiện trong ngăn General (Chung) hoặc ngăn Signing & Capabilities (Ký và khả năng) của trình chỉnh sửa dự án Xcode. Mã nhận dạng gói cũng xuất hiện trong phần Thông tin chung của trang Thông tin ứng dụng cho ứng dụng trên trang web App Store Connect của Apple.

    Xác nhận rằng bạn đang sử dụng đúng mã nhận dạng gói cho ứng dụng của mình, vì bạn sẽ không thể thay đổi mã này nếu đang dùng tính năng Kiểm tra ứng dụng.

  4. (Không bắt buộc)

    Nhập mã App Store của ứng dụng nếu ứng dụng được xuất bản trong App Store của Apple. Mã cửa hàng là một chuỗi số có trong mọi URL của Apple App Store.

    1. Mở ứng dụng Apple App Store trên thiết bị iOS hoặc iPadOS.
    2. Tìm ứng dụng của bạn.
    3. Chọn nút Chia sẻ (biểu tượng hình vuông và mũi tên lên).
    4. Chọn Sao chép đường liên kết.
    5. Dán đường liên kết vào một trình chỉnh sửa văn bản. Mã nhận dạng App Store là phần cuối cùng của URL.

      Ví dụ: https://apps.apple.com/app/google/id284815942

  5. (Không bắt buộc)

    Nhập mã nhóm của bạn. Hãy xem phần Xác định mã nhận dạng nhóm trong tài liệu về Tài khoản nhà phát triển của Apple để biết thêm thông tin.

    Lưu ý: Bạn phải điền vào trường Team ID nếu đang bật App Check cho ứng dụng khách của mình.
  6. (Không bắt buộc)

    Bật App Check cho ứng dụng iOS. Khi bạn bật App Check, dịch vụ Chứng thực ứng dụng của Apple sẽ được dùng để xác minh rằng các yêu cầu OAuth 2.0 bắt nguồn từ ứng dụng OAuth của bạn là chính hãng và đến từ ứng dụng của bạn. Điều này giúp giảm nguy cơ giả mạo ứng dụng. Tìm hiểu thêm về cách bật App Check cho ứng dụng iOS.

  7. Nhấp vào Tạo.
UWP
  1. Chọn loại ứng dụng Universal Windows Platform.
  2. Nhập tên cho ứng dụng OAuth. Tên này xuất hiện trên của dự án để xác định ứng dụng khách.
  3. Nhập mã nhận dạng gồm 12 ký tự của ứng dụng trên Microsoft Store. Bạn có thể tìm thấy giá trị này trong Microsoft Partner Center trên trang Nhận dạng ứng dụng trong phần Quản lý ứng dụng.
  4. Nhấp vào Tạo.

Đối với các ứng dụng UWP, lược đồ URI tuỳ chỉnh không được dài hơn 39 ký tự.

Xác định phạm vi truy cập

Phạm vi cho phép ứng dụng của bạn chỉ yêu cầu quyền truy cập vào những tài nguyên cần thiết, đồng thời cho phép người dùng kiểm soát mức độ truy cập mà họ cấp cho ứng dụng của bạn. Do đó, có thể có mối quan hệ nghịch đảo giữa số lượng phạm vi được yêu cầu và khả năng nhận được sự đồng ý của người dùng.

Trước khi bắt đầu triển khai quy trình uỷ quyền OAuth 2.0, bạn nên xác định những phạm vi mà ứng dụng của bạn sẽ cần có quyền truy cập.

YouTube Analytics API sử dụng các phạm vi sau:

Phạm vi Mô tả
https://www.googleapis.com/auth/youtube Quản lý tài khoản YouTube của bạn
https://www.googleapis.com/auth/youtube.readonly Xem tài khoản YouTube của bạn
https://www.googleapis.com/auth/youtubepartner Xem và quản lý tài sản cũng như nội dung được kết hợp của bạn trên YouTube
https://www.googleapis.com/auth/yt-analytics-monetary.readonly Xem báo cáo của YouTube Analytics về tài chính và phi tài chính cho nội dung trên YouTube
https://www.googleapis.com/auth/yt-analytics.readonly Xem báo cáo Analytics trên YouTube dành cho nội dung YouTube của bạn

YouTube Reporting API sử dụng các phạm vi sau:

Phạm vi Mô tả
https://www.googleapis.com/auth/yt-analytics-monetary.readonly Xem báo cáo của YouTube Analytics về tài chính và phi tài chính cho nội dung trên YouTube
https://www.googleapis.com/auth/yt-analytics.readonly Xem báo cáo Analytics trên YouTube dành cho nội dung YouTube của bạn

Tài liệu Phạm vi API OAuth 2.0 chứa danh sách đầy đủ các phạm vi mà bạn có thể sử dụng để truy cập vào các API của Google.

Lấy mã truy cập OAuth 2.0

Các bước sau đây cho biết cách ứng dụng của bạn tương tác với máy chủ OAuth 2.0 của Google để nhận được sự đồng ý của người dùng nhằm thực hiện một yêu cầu API thay cho người dùng. Ứng dụng của bạn phải có sự đồng ý đó thì mới có thể thực thi yêu cầu Google API cần có sự uỷ quyền của người dùng.

Bước 1: Tạo trình xác minh mã và thử thách

Google hỗ trợ giao thức Khoá bằng chứng để trao đổi mã (PKCE) nhằm giúp quy trình cài đặt ứng dụng trở nên an toàn hơn. Một trình xác minh mã riêng biệt được tạo cho mọi yêu cầu uỷ quyền và giá trị đã chuyển đổi của trình xác minh này (gọi là "code_challenge") sẽ được gửi đến máy chủ uỷ quyền để lấy mã uỷ quyền.

Tạo trình xác minh mã

code_verifier là một chuỗi ngẫu nhiên mật mã có entropy cao, sử dụng các ký tự không dành riêng [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~", có độ dài tối thiểu là 43 ký tự và độ dài tối đa là 128 ký tự.

Trình xác minh mã phải có đủ độ ngẫu nhiên để khiến việc đoán giá trị trở nên bất khả thi.

Tạo thử thách về mã

Chúng tôi hỗ trợ 2 phương thức tạo thử thách mã.

Phương thức tạo thử thách mã
S256 (nên dùng) Thử thách mã là hàm băm SHA256 được mã hoá Base64URL (không có khoảng đệm) của trình xác minh mã.
code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
plain Thách thức về mã có cùng giá trị với trình xác minh mã được tạo ở trên.
code_challenge = code_verifier

Bước 2: Gửi yêu cầu đến máy chủ OAuth 2.0 của Google

Để nhận được sự uỷ quyền của người dùng, hãy gửi yêu cầu đến máy chủ uỷ quyền của Google tại https://accounts.google.com/o/oauth2/v2/auth. Điểm cuối này xử lý việc tra cứu phiên hoạt động, xác thực người dùng và lấy sự đồng ý của người dùng. Chỉ có thể truy cập vào điểm cuối qua SSL và điểm cuối này từ chối các kết nối HTTP (không phải SSL).

Máy chủ uỷ quyền hỗ trợ các tham số chuỗi truy vấn sau đây cho các ứng dụng đã cài đặt:

Thông số
client_id Bắt buộc

Mã ứng dụng khách cho ứng dụng của bạn. Bạn có thể tìm thấy giá trị này trong .

redirect_uri Bắt buộc

Xác định cách máy chủ uỷ quyền của Google gửi phản hồi đến ứng dụng của bạn. Có một số lựa chọn chuyển hướng dành cho các ứng dụng đã cài đặt và bạn sẽ thiết lập thông tin uỷ quyền với một phương thức chuyển hướng cụ thể.

Giá trị phải khớp chính xác với một trong các URI chuyển hướng được uỷ quyền cho ứng dụng OAuth 2.0 mà bạn đã định cấu hình trong của ứng dụng . Nếu giá trị này không khớp với một URI được uỷ quyền, bạn sẽ gặp lỗi redirect_uri_mismatch.

Bảng dưới đây cho biết giá trị tham số redirect_uri phù hợp cho từng phương thức:

Giá trị redirect_uri
Lược đồ URI tuỳ chỉnh com.example.app:redirect_uri_path

hoặc

com.googleusercontent.apps.123:redirect_uri_path
  • com.example.app là ký hiệu DNS ngược của một miền mà bạn kiểm soát. Lược đồ tuỳ chỉnh phải chứa một dấu chấm để hợp lệ.
  • com.googleusercontent.apps.123 là ký hiệu DNS ngược của mã ứng dụng khách.
  • redirect_uri_path là một thành phần đường dẫn không bắt buộc, chẳng hạn như /oauth2redirect. Xin lưu ý rằng đường dẫn phải bắt đầu bằng một dấu gạch chéo duy nhất, khác với URL HTTP thông thường.
Địa chỉ IP loopback http://127.0.0.1:port hoặc http://[::1]:port

Truy vấn nền tảng của bạn để tìm địa chỉ IP vòng lặp liên quan và khởi động một trình nghe HTTP trên một cổng ngẫu nhiên có sẵn. Thay thế port bằng số cổng thực tế mà ứng dụng của bạn đang theo dõi.

Xin lưu ý rằng chúng tôi KHÔNG DÙNG NỮA lựa chọn chuyển hướng địa chỉ IP vòng lặp trên ứng dụng di động.

response_type Bắt buộc

Xác định xem điểm cuối Google OAuth 2.0 có trả về mã uỷ quyền hay không.

Đặt giá trị tham số thành code cho các ứng dụng đã cài đặt.

scope Bắt buộc

Một danh sách các phạm vi được phân tách bằng dấu cách, xác định những tài nguyên mà ứng dụng của bạn có thể truy cập thay cho người dùng. Những giá trị này thông báo cho màn hình đồng ý mà Google hiển thị cho người dùng.

Phạm vi cho phép ứng dụng của bạn chỉ yêu cầu quyền truy cập vào những tài nguyên cần thiết, đồng thời cho phép người dùng kiểm soát mức độ truy cập mà họ cấp cho ứng dụng của bạn. Do đó, có mối quan hệ tỷ lệ nghịch giữa số lượng phạm vi được yêu cầu và khả năng nhận được sự đồng ý của người dùng.

YouTube Analytics API sử dụng các phạm vi sau:

Phạm vi Mô tả
https://www.googleapis.com/auth/youtube Quản lý tài khoản YouTube của bạn
https://www.googleapis.com/auth/youtube.readonly Xem tài khoản YouTube của bạn
https://www.googleapis.com/auth/youtubepartner Xem và quản lý tài sản cũng như nội dung được kết hợp của bạn trên YouTube
https://www.googleapis.com/auth/yt-analytics-monetary.readonly Xem báo cáo của YouTube Analytics về tài chính và phi tài chính cho nội dung trên YouTube
https://www.googleapis.com/auth/yt-analytics.readonly Xem báo cáo Analytics trên YouTube dành cho nội dung YouTube của bạn

YouTube Reporting API sử dụng các phạm vi sau:

Phạm vi Mô tả
https://www.googleapis.com/auth/yt-analytics-monetary.readonly Xem báo cáo của YouTube Analytics về tài chính và phi tài chính cho nội dung trên YouTube
https://www.googleapis.com/auth/yt-analytics.readonly Xem báo cáo Analytics trên YouTube dành cho nội dung YouTube của bạn

Tài liệu Phạm vi API OAuth 2.0 cung cấp danh sách đầy đủ các phạm vi mà bạn có thể sử dụng để truy cập vào các API của Google.

code_challenge Recommended (Nên dùng)

Chỉ định một code_verifier được mã hoá sẽ được dùng làm thử thách phía máy chủ trong quá trình trao đổi mã uỷ quyền. Hãy xem phần tạo thử thách mã ở trên để biết thêm thông tin.

code_challenge_method Recommended (Nên dùng)

Chỉ định phương thức được dùng để mã hoá một code_verifier sẽ được dùng trong quá trình trao đổi mã uỷ quyền. Bạn phải sử dụng tham số này với tham số code_challenge được mô tả ở trên. Giá trị của code_challenge_method mặc định là plain nếu không có trong yêu cầu bao gồm code_challenge. Giá trị được hỗ trợ duy nhất cho tham số này là S256 hoặc plain.

state Recommended (Nên dùng)

Chỉ định mọi giá trị chuỗi mà ứng dụng của bạn dùng để duy trì trạng thái giữa yêu cầu uỷ quyền và phản hồi của máy chủ uỷ quyền. Máy chủ trả về chính xác giá trị mà bạn gửi dưới dạng một cặp name=value trong mã nhận dạng đoạn URL (#) của redirect_uri sau khi người dùng đồng ý hoặc từ chối yêu cầu truy cập của ứng dụng.

Bạn có thể sử dụng tham số này cho nhiều mục đích, chẳng hạn như chuyển hướng người dùng đến tài nguyên chính xác trong ứng dụng của bạn, gửi số chỉ dùng một lần và giảm thiểu hành vi giả mạo yêu cầu trên nhiều trang web. Vì redirect_uri của bạn có thể bị đoán, nên việc sử dụng giá trị state có thể giúp bạn yên tâm hơn rằng một kết nối đến là kết quả của một yêu cầu xác thực. Nếu tạo một chuỗi ngẫu nhiên hoặc mã hoá hàm băm của cookie hoặc một giá trị khác ghi lại trạng thái của ứng dụng, bạn có thể xác thực phản hồi để đảm bảo thêm rằng yêu cầu và phản hồi bắt nguồn từ cùng một trình duyệt, giúp bảo vệ chống lại các cuộc tấn công như giả mạo yêu cầu trên nhiều trang web. Hãy xem tài liệu về OpenID Connect để biết ví dụ về cách tạo và xác nhận mã thông báo state.

login_hint Không bắt buộc

Nếu biết người dùng nào đang cố gắng xác thực, ứng dụng của bạn có thể sử dụng tham số này để cung cấp một gợi ý cho Máy chủ xác thực của Google. Máy chủ sử dụng gợi ý này để đơn giản hoá quy trình đăng nhập bằng cách điền sẵn vào trường email trong biểu mẫu đăng nhập hoặc bằng cách chọn phiên đăng nhập nhiều lần thích hợp.

Đặt giá trị tham số thành địa chỉ email hoặc giá trị nhận dạng sub, tương đương với mã nhận dạng Google của người dùng.

URL uỷ quyền mẫu

Các thẻ bên dưới cho thấy các URL uỷ quyền mẫu cho các lựa chọn URI chuyển hướng khác nhau.

Mỗi URL yêu cầu quyền truy cập vào một phạm vi cho phép truy cập để truy xuất báo cáo YouTube Analytics của người dùng.

Các URL này giống hệt nhau, ngoại trừ giá trị của tham số redirect_uri. Các URL này cũng chứa các tham số bắt buộc response_typeclient_id, cũng như tham số không bắt buộc state. Mỗi URL chứa dấu ngắt dòng và dấu cách để dễ đọc.

Lược đồ URI tuỳ chỉnh

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly&
 response_type=code&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken&
 redirect_uri=com.example.app%3A/oauth2redirect&
 client_id=client_id

Địa chỉ IP loopback

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly&
 response_type=code&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken&
 redirect_uri=http%3A//127.0.0.1%3A9004&
 client_id=client_id

Bước 3: Google nhắc người dùng đồng ý

Trong bước này, người dùng sẽ quyết định có cấp cho ứng dụng của bạn quyền truy cập được yêu cầu hay không. Ở giai đoạn này, Google sẽ hiển thị một cửa sổ đồng ý cho biết tên của ứng dụng và các dịch vụ Google API mà ứng dụng đang yêu cầu quyền truy cập bằng thông tin xác thực uỷ quyền của người dùng, cũng như bản tóm tắt về các phạm vi truy cập sẽ được cấp. Sau đó, người dùng có thể đồng ý cấp quyền truy cập vào một hoặc nhiều phạm vi mà ứng dụng của bạn yêu cầu hoặc từ chối yêu cầu.

Ứng dụng của bạn không cần làm gì ở giai đoạn này vì ứng dụng sẽ đợi phản hồi từ máy chủ OAuth 2.0 của Google cho biết có quyền truy cập nào được cấp hay không. Phản hồi đó được giải thích trong bước tiếp theo.

Lỗi

Các yêu cầu đến điểm cuối uỷ quyền OAuth 2.0 của Google có thể hiển thị thông báo lỗi cho người dùng thay vì các quy trình xác thực và uỷ quyền dự kiến. Dưới đây là danh sách mã lỗi thường gặp và các giải pháp được đề xuất.

admin_policy_enforced

Tài khoản Google không thể uỷ quyền một hoặc nhiều phạm vi được yêu cầu do chính sách của quản trị viên Google Workspace. Hãy xem bài viết trợ giúp dành cho Quản trị viên Google Workspace Kiểm soát việc những ứng dụng nội bộ và ứng dụng của bên thứ ba nào truy cập vào dữ liệu Google Workspace để biết thêm thông tin về cách quản trị viên có thể hạn chế quyền truy cập vào tất cả các phạm vi hoặc phạm vi nhạy cảm và bị hạn chế cho đến khi quyền truy cập được cấp rõ ràng cho mã ứng dụng OAuth của bạn.

disallowed_useragent

Điểm cuối uỷ quyền xuất hiện trong một tác nhân người dùng được nhúng mà Chính sách về OAuth 2.0 của Google không cho phép.

Android

Nhà phát triển Android có thể gặp phải thông báo lỗi này khi mở yêu cầu uỷ quyền trong android.webkit.WebView. Thay vào đó, nhà phát triển nên sử dụng các thư viện Android như Google Sign-In for Android hoặc AppAuth for Android của OpenID Foundation.

Nhà phát triển web có thể gặp phải lỗi này khi một ứng dụng Android mở một đường liên kết chung trên web trong một tác nhân người dùng được nhúng và người dùng chuyển đến điểm cuối uỷ quyền OAuth 2.0 của Google từ trang web của bạn. Nhà phát triển nên cho phép các đường liên kết chung mở trong trình xử lý đường liên kết mặc định của hệ điều hành, bao gồm cả trình xử lý Đường liên kết đến ứng dụng Android hoặc ứng dụng trình duyệt mặc định. Thư viện Thẻ tuỳ chỉnh của Android cũng là một lựa chọn được hỗ trợ.

iOS

Nhà phát triển iOS và macOS có thể gặp phải lỗi này khi mở yêu cầu uỷ quyền trong WKWebView. Thay vào đó, nhà phát triển nên dùng các thư viện iOS như Google Sign-In cho iOS hoặc AppAuth cho iOS của OpenID Foundation.

Nhà phát triển web có thể gặp phải lỗi này khi một ứng dụng iOS hoặc macOS mở một đường liên kết chung trên web trong một tác nhân người dùng được nhúng và người dùng chuyển đến điểm cuối uỷ quyền OAuth 2.0 của Google từ trang web của bạn. Nhà phát triển nên cho phép các đường liên kết chung mở trong trình xử lý đường liên kết mặc định của hệ điều hành, bao gồm cả trình xử lý Đường liên kết chung hoặc ứng dụng trình duyệt mặc định. Thư viện SFSafariViewController cũng là một lựa chọn được hỗ trợ.

org_internal

Mã ứng dụng OAuth trong yêu cầu thuộc một dự án giới hạn quyền truy cập vào Tài khoản Google trong một Tổ chức Google Cloud cụ thể. Để biết thêm thông tin về lựa chọn cấu hình này, hãy xem phần Loại người dùng trong bài viết trợ giúp Thiết lập màn hình đồng ý của OAuth.

deleted_client

Ứng dụng OAuth đang được dùng để đưa ra yêu cầu đã bị xoá. Bạn có thể xoá theo cách thủ công hoặc tự động trong trường hợp các ứng dụng không dùng đến . Bạn có thể khôi phục các khách hàng đã xoá trong vòng 30 ngày kể từ ngày xoá. Tìm hiểu thêm .

invalid_grant

Nếu bạn đang sử dụng trình xác minh mã và thử thách, thì tham số code_callenge sẽ không hợp lệ hoặc bị thiếu. Đảm bảo rằng bạn đã đặt thông số code_challenge đúng cách.

Khi làm mới mã thông báo truy cập, mã thông báo có thể đã hết hạn hoặc không hợp lệ. Xác thực lại người dùng và yêu cầu người dùng đồng ý để lấy mã thông báo mới. Nếu bạn vẫn gặp lỗi này, hãy đảm bảo rằng ứng dụng của bạn đã được định cấu hình đúng cách và bạn đang sử dụng đúng mã thông báo và tham số trong yêu cầu của mình. Nếu không, tài khoản người dùng có thể đã bị xoá hoặc vô hiệu hoá.

redirect_uri_mismatch

redirect_uri được truyền trong yêu cầu uỷ quyền không khớp với URI chuyển hướng được uỷ quyền cho mã ứng dụng OAuth. Xem xét các URI chuyển hướng được uỷ quyền trong .

redirect_uri đã truyền có thể không hợp lệ đối với loại ứng dụng khách.

Tham số redirect_uri có thể đề cập đến quy trình OAuth ngoài băng tần (OOB) đã ngừng hoạt động và không còn được hỗ trợ nữa. Tham khảo hướng dẫn di chuyển để cập nhật chế độ tích hợp.

invalid_request

Đã xảy ra lỗi với yêu cầu mà bạn gửi. Điều này có thể là do một số lý do sau:

  • Yêu cầu không được định dạng đúng cách
  • Yêu cầu thiếu các tham số bắt buộc
  • Yêu cầu sử dụng một phương thức uỷ quyền mà Google không hỗ trợ. Xác minh rằng quá trình tích hợp OAuth của bạn sử dụng một phương thức tích hợp được đề xuất
  • Một giản đồ tuỳ chỉnh được dùng cho uri chuyển hướng : Nếu bạn thấy thông báo lỗi Ứng dụng Chrome không hỗ trợ giản đồ URI tuỳ chỉnh hoặc Ứng dụng Android của bạn không bật giản đồ URI tuỳ chỉnh, thì có nghĩa là bạn đang dùng một giản đồ URI tuỳ chỉnh không được hỗ trợ trên ứng dụng Chrome và bị tắt theo mặc định trên Android. Tìm hiểu thêm về các lựa chọn thay thế cho lược đồ URI tuỳ chỉnh

Bước 4: Xử lý phản hồi của máy chủ OAuth 2.0

Cách ứng dụng của bạn nhận được phản hồi uỷ quyền phụ thuộc vào lược đồ URI chuyển hướng mà ứng dụng đó sử dụng. Bất kể lược đồ nào, phản hồi sẽ chứa mã uỷ quyền (code) hoặc lỗi (error). Ví dụ: error=access_denied cho biết người dùng đã từ chối yêu cầu.

Nếu người dùng cấp quyền truy cập cho ứng dụng của bạn, bạn có thể trao đổi mã uỷ quyền để lấy mã truy cập và mã làm mới như mô tả trong bước tiếp theo.

Bước 5: Trao đổi mã uỷ quyền để lấy mã làm mới và mã truy cập

Để đổi mã uỷ quyền lấy mã truy cập, hãy gọi điểm cuối https://oauth2.googleapis.com/token và đặt các tham số sau:

Trường
client_id Mã ứng dụng khách nhận được từ .
client_secret Khoá bí mật của ứng dụng khách nhận được từ .
code Mã uỷ quyền được trả về từ yêu cầu ban đầu.
code_verifier Trình xác minh mã mà bạn đã tạo ở Bước 1.
grant_type Như được xác định trong quy cách OAuth 2.0, bạn phải đặt giá trị của trường này thành authorization_code.
redirect_uri Một trong các URI chuyển hướng được liệt kê cho dự án của bạn trong cho client_id đã cho.

Đoạn mã sau đây cho thấy một yêu cầu mẫu:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=your_client_id&
client_secret=your_client_secret&
redirect_uri=http://127.0.0.1:9004&
grant_type=authorization_code

Google phản hồi yêu cầu này bằng cách trả về một đối tượng JSON chứa mã truy cập có thời hạn ngắn và mã làm mới.

Phản hồi chứa các trường sau:

Trường
access_token Mã thông báo mà ứng dụng của bạn gửi để uỷ quyền cho một yêu cầu API của Google.
expires_in Thời gian còn lại của mã truy cập tính bằng giây.
id_token Lưu ý: Thuộc tính này chỉ được trả về nếu yêu cầu của bạn có phạm vi nhận dạng, chẳng hạn như openid, profile hoặc email. Giá trị này là một Mã thông báo web JSON (JWT) chứa thông tin nhận dạng được ký bằng chữ ký số về người dùng.
refresh_token Mã thông báo mà bạn có thể dùng để lấy mã thông báo truy cập mới. Mã làm mới có hiệu lực cho đến khi người dùng thu hồi quyền truy cập hoặc mã làm mới hết hạn. Xin lưu ý rằng mã làm mới luôn được trả về cho các ứng dụng đã cài đặt.
refresh_token_expires_in Thời gian còn lại của mã làm mới tính bằng giây. Giá trị này chỉ được đặt khi người dùng cấp quyền truy cập dựa trên thời gian.
scope Phạm vi truy cập do access_token cấp được thể hiện dưới dạng danh sách các chuỗi phân tách bằng dấu cách, phân biệt chữ hoa chữ thường.
token_type Loại mã thông báo được trả về. Tại thời điểm này, giá trị của trường này luôn được đặt thành Bearer.

Đoạn mã sau đây cho thấy một phản hồi mẫu:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "token_type": "Bearer",
  "scope": "https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/calendar.readonly",
  "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

Bước 6: Kiểm tra xem người dùng đã cấp quyền truy cập vào những phạm vi nào

Khi yêu cầu nhiều quyền (phạm vi), người dùng có thể không cấp cho ứng dụng của bạn quyền truy cập vào tất cả các quyền đó. Ứng dụng của bạn phải xác minh những phạm vi nào đã được cấp và xử lý một cách linh hoạt những trường hợp một số quyền bị từ chối, thường là bằng cách tắt các tính năng dựa vào những phạm vi bị từ chối đó.

Tuy nhiên, vẫn có một số trường hợp ngoại lệ. Các ứng dụng Google Workspace Enterprise có quyền uỷ quyền trên toàn miền hoặc các ứng dụng được đánh dấu là Đáng tin cậy sẽ bỏ qua màn hình đồng ý cấp quyền chi tiết. Đối với những ứng dụng này, người dùng sẽ không thấy màn hình đồng ý cấp quyền chi tiết. Thay vào đó, ứng dụng của bạn sẽ nhận được tất cả các phạm vi được yêu cầu hoặc không nhận được phạm vi nào.

Để biết thêm thông tin chi tiết, hãy xem bài viết Cách xử lý các quyền ở cấp độ chi tiết.

Để kiểm tra xem người dùng đã cấp cho ứng dụng của bạn quyền truy cập vào một phạm vi cụ thể hay chưa, hãy kiểm tra trường scope trong phản hồi mã truy cập. Phạm vi truy cập được cấp bởi access_token dưới dạng danh sách các chuỗi phân tách bằng dấu cách, phân biệt chữ hoa chữ thường.

Ví dụ: phản hồi mã truy cập mẫu sau đây cho biết rằng người dùng đã cấp cho ứng dụng của bạn quyền truy cập vào quyền chỉ đọc đối với hoạt động trên Drive và sự kiện trên Lịch:

  {
    "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
    "expires_in": 3920,
    "token_type": "Bearer",
    "scope": "https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/calendar.readonly",
    "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
  }

Gọi các API của Google

Sau khi ứng dụng của bạn nhận được mã truy cập, bạn có thể sử dụng mã này để thực hiện các lệnh gọi đến một API của Google thay cho một tài khoản người dùng nhất định nếu(các) phạm vi truy cập mà API yêu cầu đã được cấp. Để thực hiện việc này, hãy thêm mã truy cập vào yêu cầu gửi đến API bằng cách thêm tham số truy vấn access_token hoặc giá trị tiêu đề HTTP Authorization Bearer. Khi có thể, bạn nên dùng tiêu đề HTTP vì chuỗi truy vấn thường xuất hiện trong nhật ký máy chủ. Trong hầu hết các trường hợp, bạn có thể sử dụng một thư viện ứng dụng để thiết lập các lệnh gọi đến API của Google (ví dụ: khi gọi API Phân tích YouTube).

Xin lưu ý rằng YouTube Analytics API không hỗ trợ quy trình tài khoản dịch vụ. YouTube Reporting API chỉ hỗ trợ tài khoản dịch vụ cho những chủ sở hữu nội dung trên YouTube sở hữu và quản lý nhiều kênh YouTube, chẳng hạn như hãng thu âm và hãng phim.

Bạn có thể dùng thử tất cả các API của Google và xem phạm vi của các API đó tại OAuth 2.0 Playground.

Ví dụ về HTTP GET

Lệnh gọi đến điểm cuối reports.query (YouTube Analytics API) bằng cách sử dụng tiêu đề HTTP Authorization: Bearer có thể trông như sau. Xin lưu ý rằng bạn cần chỉ định mã truy cập của riêng mình:

GET /youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

Sau đây là một lệnh gọi đến cùng một API cho người dùng đã xác thực bằng cách sử dụng tham số chuỗi truy vấn access_token:

GET https://www.googleapis.com/youtube/analytics/v1/reports?access_token=access_token&ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views

Ví dụ về curl

Bạn có thể kiểm thử các lệnh này bằng ứng dụng dòng lệnh curl. Sau đây là ví dụ sử dụng lựa chọn tiêu đề HTTP (nên dùng):

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views

Hoặc, bạn có thể chọn tham số chuỗi truy vấn:

curl https://www.googleapis.com/youtube/analytics/v1/reports?access_token=access_token&ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views

Làm mới mã truy cập

Mã truy cập sẽ hết hạn định kỳ và trở thành thông tin xác thực không hợp lệ cho một yêu cầu API có liên quan. Bạn có thể làm mới mã truy cập mà không cần nhắc người dùng cấp quyền (kể cả khi người dùng không có mặt) nếu bạn yêu cầu quyền truy cập ngoại tuyến vào các phạm vi được liên kết với mã thông báo.

Để làm mới mã truy cập, ứng dụng của bạn sẽ gửi một yêu cầu HTTPS POST đến máy chủ uỷ quyền của Google (https://oauth2.googleapis.com/token) có chứa các tham số sau:

Trường
client_id Mã ứng dụng khách nhận được từ API Console.
client_secret Khoá bí mật của ứng dụng khách nhận được từ API Console. (client_secret không áp dụng cho các yêu cầu từ những ứng dụng khách được đăng ký dưới dạng ứng dụng Android, iOS hoặc Chrome.)
grant_type Như được xác định trong quy cách OAuth 2.0, giá trị của trường này phải được đặt thành refresh_token.
refresh_token Mã làm mới được trả về từ quá trình trao đổi mã uỷ quyền.

Đoạn mã sau đây cho thấy một yêu cầu mẫu:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=your_client_id&
client_secret=your_client_secret&
refresh_token=refresh_token&
grant_type=refresh_token

Miễn là người dùng chưa thu hồi quyền truy cập đã cấp cho ứng dụng, máy chủ mã thông báo sẽ trả về một đối tượng JSON chứa mã thông báo truy cập mới. Đoạn mã sau đây cho thấy một phản hồi mẫu:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "https://www.googleapis.com/auth/drive.metadata.readonly https://www.googleapis.com/auth/calendar.readonly",
  "token_type": "Bearer"
}

Xin lưu ý rằng có giới hạn về số lượng mã làm mới sẽ được cấp; một giới hạn cho mỗi tổ hợp ứng dụng/người dùng và một giới hạn khác cho mỗi người dùng trên tất cả các ứng dụng. Bạn nên lưu mã làm mới trong bộ nhớ dài hạn và tiếp tục sử dụng mã này miễn là mã còn hiệu lực. Nếu ứng dụng của bạn yêu cầu quá nhiều mã làm mới, thì ứng dụng có thể gặp phải những giới hạn này. Trong trường hợp đó, các mã làm mới cũ hơn sẽ ngừng hoạt động.

Thu hồi mã thông báo

Trong một số trường hợp, người dùng có thể muốn thu hồi quyền truy cập đã cấp cho một ứng dụng. Người dùng có thể thu hồi quyền truy cập bằng cách truy cập vào phần Cài đặt tài khoản. Hãy xem phần Xoá quyền truy cập của trang web hoặc ứng dụng trong tài liệu hỗ trợ Các trang web và ứng dụng của bên thứ ba có quyền truy cập vào tài khoản của bạn để biết thêm thông tin.

Ứng dụng cũng có thể thu hồi quyền truy cập đã cấp cho ứng dụng đó theo phương thức có lập trình. Việc thu hồi theo chương trình là rất quan trọng trong trường hợp người dùng huỷ đăng ký, xoá một ứng dụng hoặc các tài nguyên API mà ứng dụng yêu cầu đã thay đổi đáng kể. Nói cách khác, một phần của quy trình xoá có thể bao gồm yêu cầu API để đảm bảo các quyền đã cấp cho ứng dụng trước đó sẽ bị xoá.

Để thu hồi mã thông báo theo phương thức lập trình, ứng dụng của bạn sẽ gửi yêu cầu đến https://oauth2.googleapis.com/revoke và đưa mã thông báo vào làm một tham số:

curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
        https://oauth2.googleapis.com/revoke?token={token}

Mã thông báo có thể là mã thông báo truy cập hoặc mã thông báo làm mới. Nếu mã thông báo là mã truy cập và có mã làm mới tương ứng, thì mã làm mới cũng sẽ bị thu hồi.

Nếu yêu cầu thu hồi được xử lý thành công, thì mã trạng thái HTTP của phản hồi sẽ là 200. Đối với các điều kiện lỗi, mã trạng thái HTTP 400 sẽ được trả về cùng với mã lỗi.

Phương thức chuyển hướng ứng dụng

Lược đồ URI tuỳ chỉnh (Android, iOS, UWP)

Lược đồ URI tuỳ chỉnh là một dạng liên kết sâu sử dụng lược đồ do người dùng xác định để mở ứng dụng của bạn.

Giải pháp thay thế cho việc sử dụng lược đồ URI tuỳ chỉnh trên Android

Sử dụng giải pháp thay thế được đề xuất. Giải pháp này sẽ gửi phản hồi OAuth 2.0 trực tiếp đến ứng dụng của bạn, giúp bạn không cần dùng URI chuyển hướng.

Cách di chuyển sang Thư viện Dịch vụ nhận dạng của Google cho Android

Nếu sử dụng một lược đồ tuỳ chỉnh cho hoạt động tích hợp OAuth trên Android, bạn cần hoàn tất các thao tác sau để di chuyển hoàn toàn sang sử dụng Thư viện Android Dịch vụ nhận dạng của Google được đề xuất:

  1. Cập nhật mã để sử dụng Thư viện dịch vụ nhận dạng của Google cho Android.
  2. Tắt tính năng hỗ trợ lược đồ tuỳ chỉnh trong Google Cloud Console.

Các bước sau đây trình bày chi tiết cách di chuyển sang Thư viện Dịch vụ nhận dạng của Google cho Android:

  1. Cập nhật mã để sử dụng Thư viện dịch vụ nhận dạng của Google cho Android:
    1. Kiểm tra mã của bạn để xác định vị trí mà bạn đang gửi yêu cầu đến máy chủ OAuth 2.0 của Google; nếu sử dụng một lược đồ tuỳ chỉnh, yêu cầu của bạn sẽ trông như sau:
        https://accounts.google.com/o/oauth2/v2/auth?
        scope=<SCOPES>&
        response_type=code&
        &state=<STATE>&
        redirect_uri=com.example.app:/oauth2redirect&
        client_id=<CLIENT_ID>
        
      com.example.app:/oauth2redirect là URI chuyển hướng theo lược đồ tuỳ chỉnh trong ví dụ trên. Hãy xem định nghĩa tham số redirect_uri để biết thêm thông tin chi tiết về định dạng của giá trị lược đồ URI tuỳ chỉnh.
    2. Ghi lại các thông số yêu cầu scopeclient_id mà bạn cần định cấu hình SDK Đăng nhập bằng Google.
    3. Làm theo hướng dẫn Uỷ quyền truy cập vào dữ liệu người dùng trên Google để thiết lập SDK. Bạn có thể bỏ qua bước Thiết lập dự án trên Google Cloud Console vì bạn sẽ sử dụng lại client_id mà bạn đã truy xuất ở bước trước.
    4. Làm theo hướng dẫn Yêu cầu các quyền cần thiết cho hành động của người dùng. Điều này bao gồm các bước sau:
      1. Yêu cầu người dùng cấp quyền.
      2. Sử dụng phương thức getServerAuthCode để truy xuất mã uỷ quyền cho các phạm vi mà bạn đang yêu cầu cấp quyền.
      3. Gửi mã uỷ quyền đến máy chủ phụ trợ của ứng dụng để trao đổi mã đó lấy mã truy cập và mã làm mới.
      4. Sử dụng mã thông báo truy cập đã truy xuất để thực hiện lệnh gọi đến các API của Google thay mặt cho người dùng.
  2. Tắt chế độ hỗ trợ cho lược đồ tuỳ chỉnh trong Google API Console:
    1. Chuyển đến danh sách thông tin đăng nhập OAuth 2.0 rồi chọn ứng dụng Android của bạn.
    2. Chuyển đến phần Cài đặt nâng cao, bỏ đánh dấu hộp Bật lược đồ URI tuỳ chỉnh rồi nhấp vào Lưu để tắt tính năng hỗ trợ lược đồ URI tuỳ chỉnh.

Bật lược đồ URI tuỳ chỉnh

Nếu phương án thay thế được đề xuất không phù hợp với bạn, thì bạn có thể bật lược đồ URI tuỳ chỉnh cho ứng dụng Android của mình bằng cách làm theo hướng dẫn bên dưới:
  1. Chuyển đến danh sách thông tin đăng nhập OAuth 2.0 rồi chọn ứng dụng Android của bạn.
  2. Chuyển đến phần Cài đặt nâng cao, đánh dấu vào hộp Bật giản đồ URI tuỳ chỉnh rồi nhấp vào Lưu để bật tính năng hỗ trợ giản đồ URI tuỳ chỉnh.

Giải pháp thay thế cho việc sử dụng lược đồ URI tuỳ chỉnh trên các ứng dụng Chrome

Sử dụng Chrome Identity API. API này sẽ gửi phản hồi OAuth 2.0 trực tiếp đến ứng dụng của bạn, giúp bạn không cần đến URI chuyển hướng.

Địa chỉ IP vòng lặp (macOS, Linux, máy tính Windows)

Để nhận mã uỷ quyền bằng URL này, ứng dụng của bạn phải đang theo dõi trên máy chủ web cục bộ. Bạn có thể làm việc này trên nhiều nền tảng, nhưng không phải nền tảng nào cũng hỗ trợ. Tuy nhiên, nếu nền tảng của bạn hỗ trợ, thì đây là cơ chế được đề xuất để lấy mã uỷ quyền.

Khi nhận được phản hồi uỷ quyền, để có khả năng sử dụng tốt nhất, ứng dụng của bạn nên phản hồi bằng cách hiển thị một trang HTML hướng dẫn người dùng đóng trình duyệt và quay lại ứng dụng của bạn.

Cách sử dụng được đề xuất Các ứng dụng dành cho máy tính chạy macOS, Linux và Windows (nhưng không phải Universal Windows Platform)
Giá trị biểu mẫu Đặt loại ứng dụng thành Ứng dụng dành cho máy tính.

Sao chép/dán theo cách thủ công (Không dùng nữa)

Bảo vệ ứng dụng của bạn

Xác minh quyền sở hữu ứng dụng (Android, Chrome)

Bạn có thể xác minh quyền sở hữu ứng dụng để giảm nguy cơ bị mạo danh ứng dụng.

Android

Để hoàn tất quy trình xác minh, bạn có thể sử dụng Tài khoản nhà phát triển Google Play (nếu có) và ứng dụng của bạn đã đăng ký trên Google Play Console. Bạn phải đáp ứng các yêu cầu sau đây để xác minh thành công:

  • Bạn phải có một ứng dụng đã đăng ký trong Google Play Console có cùng tên gói và vân tay số cho chứng chỉ ký SHA-1 với ứng dụng khách Android OAuth mà bạn đang hoàn tất quy trình xác minh.
  • Bạn phải có quyền Quản trị đối với ứng dụng trong Google Play Console. Tìm hiểu thêm về cách quản lý quyền truy cập trong Google Play Console.

Trong phần Verify App Ownership (Xác minh quyền sở hữu ứng dụng) của ứng dụng Android, hãy nhấp vào nút Verify Ownership (Xác minh quyền sở hữu) để hoàn tất quy trình xác minh.

Nếu quy trình xác minh thành công, bạn sẽ nhận được một thông báo xác nhận rằng quy trình xác minh đã thành công. Nếu không, một lời nhắc lỗi sẽ xuất hiện.

Để khắc phục lỗi xác minh không thành công, hãy thử các cách sau:

  • Đảm bảo rằng ứng dụng mà bạn đang xác minh là một ứng dụng đã đăng ký trong Google Play Console.
  • Đảm bảo bạn có quyền Quản trị đối với ứng dụng trong Google Play Console.
Chrome

Để hoàn tất quy trình xác minh, bạn sẽ sử dụng tài khoản nhà phát triển trên Cửa hàng Chrome trực tuyến. Bạn phải đáp ứng các yêu cầu sau đây để xác minh thành công:

  • Bạn phải có một mục đã đăng ký trong Trang tổng quan dành cho nhà phát triển Cửa hàng Chrome trực tuyến có cùng mã nhận dạng mục với ứng dụng OAuth của Tiện ích Chrome mà bạn đang hoàn tất quy trình xác minh.
  • Bạn phải là nhà xuất bản của mặt hàng trên Cửa hàng Chrome trực tuyến. Tìm hiểu thêm về cách quản lý quyền truy cập trong Trang tổng quan dành cho nhà phát triển Cửa hàng Chrome trực tuyến.

Trong mục Verify App Ownership (Xác minh quyền sở hữu ứng dụng) của ứng dụng Chrome Extension, hãy nhấp vào nút Verify Ownership (Xác minh quyền sở hữu) để hoàn tất quy trình xác minh.

Lưu ý: Chờ vài phút trước khi hoàn tất quy trình xác minh sau khi cấp quyền truy cập vào tài khoản của bạn.

Nếu quy trình xác minh thành công, bạn sẽ nhận được một thông báo xác nhận rằng quy trình xác minh đã thành công. Nếu không, một lời nhắc lỗi sẽ xuất hiện.

Để khắc phục lỗi xác minh không thành công, hãy thử các cách sau:

  • Đảm bảo rằng có một mục đã đăng ký trong Trang tổng quan dành cho nhà phát triển Cửa hàng Chrome trực tuyến có cùng mã nhận dạng mục với ứng dụng OAuth của Tiện ích Chrome mà bạn đang hoàn tất quy trình xác minh.
  • Đảm bảo rằng bạn là nhà xuất bản của ứng dụng, tức là bạn phải là nhà xuất bản cá nhân của ứng dụng hoặc là thành viên của nhóm nhà xuất bản ứng dụng. Tìm hiểu thêm về tính năng quản lý quyền truy cập trong Trang tổng quan dành cho nhà phát triển của Cửa hàng Chrome trực tuyến.
  • Nếu bạn vừa cập nhật danh sách nhà xuất bản theo nhóm, hãy xác minh rằng danh sách thành viên nhà xuất bản theo nhóm đã được đồng bộ hoá trong Trang tổng quan dành cho nhà phát triển Cửa hàng Chrome trực tuyến. Tìm hiểu thêm về cách đồng bộ hoá danh sách thành viên của nhà xuất bản.

App Check (chỉ dành cho iOS)

Tính năng App Check giúp bảo vệ các ứng dụng iOS của bạn khỏi việc sử dụng trái phép bằng cách dùng dịch vụ Chứng thực ứng dụng của Apple để xác minh rằng các yêu cầu được gửi đến các điểm cuối Google OAuth 2.0 bắt nguồn từ các ứng dụng chính hãng của bạn. Điều này giúp giảm nguy cơ giả mạo ứng dụng.

Bật App Check cho ứng dụng iOS

Bạn phải đáp ứng các yêu cầu sau để bật thành công tính năng Kiểm tra ứng dụng cho ứng dụng iOS của mình:
  • Bạn phải chỉ định mã nhóm cho ứng dụng iOS.
  • Bạn không được sử dụng ký tự đại diện trong mã gói vì ký tự này có thể phân giải thành nhiều ứng dụng. Điều này có nghĩa là mã gói không được chứa biểu tượng dấu hoa thị (*).
Để bật App Check, hãy bật nút bật/tắt Bảo vệ ứng dụng khách OAuth của bạn khỏi hành vi sai trái bằng Firebase App Check trong chế độ chỉnh sửa của ứng dụng khách iOS.

Sau khi bật App Check, bạn sẽ bắt đầu thấy các chỉ số liên quan đến yêu cầu OAuth từ ứng dụng của mình trong chế độ chỉnh sửa của ứng dụng OAuth. Các yêu cầu từ những nguồn chưa được xác minh sẽ không bị chặn cho đến khi bạn thực thi App Check. Thông tin trên trang giám sát chỉ số có thể giúp bạn xác định thời điểm bắt đầu thực thi.

Bạn có thể gặp phải các lỗi liên quan đến tính năng App Check khi bật tính năng này cho ứng dụng iOS. Để khắc phục những lỗi này, hãy thử làm như sau:

  • Xác minh rằng mã nhận dạng gói và mã nhận dạng nhóm mà bạn chỉ định là hợp lệ.
  • Kiểm tra để đảm bảo bạn không sử dụng ký tự đại diện cho mã nhận dạng gói.

Thực thi App Check cho ứng dụng iOS

Việc bật tính năng Kiểm tra ứng dụng cho ứng dụng của bạn không tự động chặn các yêu cầu không được nhận dạng. Để thực thi biện pháp bảo vệ này, hãy chuyển đến chế độ chỉnh sửa của ứng dụng iOS. Tại đó, bạn sẽ thấy các chỉ số App Check ở bên phải trang trong phần Google Identity for iOS. Các chỉ số này bao gồm những thông tin sau:
  • Số lượng yêu cầu đã xác minh – những yêu cầu có mã thông báo App Check hợp lệ. Sau khi bạn bật chế độ thực thi App Check, chỉ những yêu cầu thuộc danh mục này mới thành công.
  • Số lượng yêu cầu chưa xác minh: có thể là yêu cầu của ứng dụng khách đã lỗi thời – yêu cầu thiếu mã thông báo App Check; những yêu cầu này có thể đến từ phiên bản cũ của ứng dụng không có chế độ triển khai App Check.
  • Số yêu cầu chưa được xác minh: yêu cầu không rõ nguồn gốc – yêu cầu thiếu mã thông báo App Check và có vẻ như không đến từ ứng dụng của bạn.
  • Số yêu cầu chưa được xác minh: yêu cầu không hợp lệ – yêu cầu có mã thông báo App Check không hợp lệ, có thể là từ một ứng dụng khách không xác thực đang cố gắng mạo danh ứng dụng của bạn hoặc từ môi trường mô phỏng.
Xem xét các chỉ số này để biết cách việc thực thi App Check sẽ ảnh hưởng đến người dùng của bạn.

Để thực thi App Check, hãy nhấp vào nút THỰC THI rồi xác nhận lựa chọn của bạn. Sau khi quy trình thực thi bắt đầu, tất cả các yêu cầu chưa được xác minh từ ứng dụng khách của bạn sẽ bị từ chối.

Lưu ý: sau khi bạn bật chế độ thực thi, có thể mất đến 15 phút thì các thay đổi mới có hiệu lực.

Không bắt buộc sử dụng App Check cho ứng dụng iOS

Việc không thực thi App Check cho ứng dụng của bạn sẽ dừng quá trình thực thi và cho phép tất cả các yêu cầu từ ứng dụng khách của bạn đến các điểm cuối OAuth 2.0 của Google, bao gồm cả các yêu cầu chưa được xác minh.

Để huỷ thực thi App Check cho ứng dụng iOS, hãy chuyển đến chế độ chỉnh sửa của ứng dụng iOS, nhấp vào nút HUỶ THỰC THI rồi xác nhận lựa chọn của bạn.

Lưu ý: sau khi bạn huỷ thực thi App Check, có thể mất tối đa 15 phút thì các thay đổi mới có hiệu lực.

Tắt App Check cho ứng dụng iOS

Việc tắt App Check cho ứng dụng sẽ dừng mọi hoạt động giám sát và thực thi App Check. Hãy cân nhắc việc không thực thi App Check để bạn có thể tiếp tục theo dõi các chỉ số cho ứng dụng khách của mình.

Để tắt App Check cho ứng dụng iOS, hãy chuyển đến chế độ chỉnh sửa của ứng dụng iOS rồi tắt nút bật/tắt Bảo vệ ứng dụng OAuth của bạn khỏi hành vi sai trái bằng Firebase App Check.

Lưu ý: sau khi bạn tắt App Check, có thể mất đến 15 phút thì các thay đổi mới có hiệu lực.

Quyền truy cập theo thời gian

Quyền truy cập dựa trên thời gian cho phép người dùng cấp cho ứng dụng của bạn quyền truy cập vào dữ liệu của họ trong một khoảng thời gian giới hạn để hoàn tất một hành động. Quyền truy cập dựa trên thời gian có trong một số sản phẩm của Google trong quy trình đồng ý, cho phép người dùng cấp quyền truy cập trong một khoảng thời gian giới hạn. Ví dụ: Data Portability API cho phép chuyển dữ liệu một lần.

Khi người dùng cấp cho ứng dụng của bạn quyền truy cập dựa trên thời gian, mã làm mới sẽ hết hạn sau khoảng thời gian được chỉ định. Xin lưu ý rằng mã làm mới có thể bị vô hiệu hoá sớm hơn trong những trường hợp cụ thể; hãy xem những trường hợp này để biết thông tin chi tiết. Trường refresh_token_expires_in được trả về trong phản hồi trao đổi mã uỷ quyền cho biết thời gian còn lại cho đến khi mã làm mới hết hạn trong những trường hợp như vậy.

Tài liệu đọc thêm

Phương pháp hay nhất hiện tại của IETF OAuth 2.0 cho ứng dụng gốc thiết lập nhiều phương pháp hay nhất được ghi lại ở đây.

Triển khai tính năng Bảo vệ nhiều tài khoản

Một bước bổ sung mà bạn nên thực hiện để bảo vệ tài khoản của người dùng là triển khai tính năng Bảo vệ trên nhiều tài khoản bằng cách sử dụng Dịch vụ bảo vệ trên nhiều tài khoản của Google. Dịch vụ này cho phép bạn đăng ký nhận thông báo về sự kiện bảo mật. Thông báo này cung cấp thông tin cho ứng dụng của bạn về những thay đổi lớn đối với tài khoản người dùng. Sau đó, bạn có thể sử dụng thông tin này để thực hiện hành động tuỳ thuộc vào cách bạn quyết định phản hồi các sự kiện.

Sau đây là một số ví dụ về các loại sự kiện mà Dịch vụ bảo vệ trên nhiều tài khoản của Google gửi đến ứng dụng của bạn:

  • https://schemas.openid.net/secevent/risc/event-type/sessions-revoked
  • https://schemas.openid.net/secevent/oauth/event-type/token-revoked
  • https://schemas.openid.net/secevent/risc/event-type/account-disabled

Hãy xem trang Bảo vệ tài khoản người dùng bằng tính năng Bảo vệ nhiều tài khoản để biết thêm thông tin về cách triển khai tính năng Bảo vệ nhiều tài khoản và danh sách đầy đủ các sự kiện có sẵn.