Lỗi uỷ quyền

Trong quá trình uỷ quyền, Google OAuth có thể trả về một lỗi. Hãy làm theo hướng dẫn sau để khắc phục các lỗi thường gặp nhất trong quy trình này.

Khắc phục sự cố

Để tìm hiểu thêm về Google OAuth, hãy xem bài viết Sử dụng OAuth 2.0 để truy cập API của Google.

Mã làm mới mã liên tục hết hạn

Mã làm mới có thể ngừng hoạt động sau 7 ngày nếu mã ứng dụng khách không được phê duyệt có thể là một nguyên nhân. Thời hạn của mã thông báo trong 7 ngày không liên quan đến hoạt động phê duyệt Thương mại hoặc Hộp cát. Dịch vụ hoặc tài khoản người dùng cần được phê duyệt và đưa mã ứng dụng khách OAuth 2.0 vào chính thức để có thể tồn tại lâu hơn trong thời gian tồn tại của mã thông báo. Xem phần Làm mới thời hạn của mã thông báo để biết thêm thông tin.

Quyền truy cập bị từ chối

Nếu đã thiết lập màn hình xin phép bằng OAuth trong Google Cloud và Loại người dùngBên ngoài, thì bạn sẽ gặp lỗi "Quyền truy cập bị từ chối" nếu cố gắng liên kết tài khoản với một Tài khoản Google không được liệt kê là người dùng thử nghiệm cho ứng dụng của bạn. Hãy nhớ thêm Tài khoản Google vào phần Người dùng thử nghiệm trong màn hình xin phép bằng OAuth.

Lỗi Trình quản lý kết nối đối tác (PCM)

Để được trợ giúp về mọi lỗi gặp phải khi truy cập vào PCM, hãy xem Tài liệu tham khảo về lỗi Trình quản lý kết nối đối tác (PCM).

Google chưa xác minh ứng dụng này

API SDM sử dụng một phạm vi bị hạn chế, có nghĩa là mọi ứng dụng dùng phạm vi này trong thời gian uỷ quyền sẽ "chưa được xác minh" trừ phi bạn hoàn tất quy trình Xác minh API OAuth. Khi sử dụng Device Access cho mục đích cá nhân, bạn không bắt buộc phải Xác minh API OAuth.

Bạn có thể thấy màn hình "Google chưa xác minh ứng dụng này" trong quá trình uỷ quyền. Màn hình này sẽ xuất hiện nếu bạn chưa định cấu hình phạm vi sdm.service trên màn hình xin phép bằng OAuth trong Google Cloud. Bạn có thể bỏ qua màn hình này bằng cách nhấp vào tuỳ chọn Advanced (Nâng cao) rồi nhấp vào Go to Project Name (Không an toàn).

Hãy xem bài viết Màn hình ứng dụng chưa được xác minh để biết thêm thông tin.

Khách hàng không hợp lệ

Khi cố lấy mã thông báo truy cập hoặc làm mới, bạn sẽ gặp lỗi "Ứng dụng khách không hợp lệ" nếu cung cấp Mật khẩu ứng dụng khách OAuth 2.0 không chính xác. Hãy đảm bảo giá trị client_secret mà bạn đang sử dụng trong các lệnh gọi mã thông báo truy cập và làm mới là giá trị cho Mã ứng dụng khách OAuth 2.0 đang được sử dụng, như có trên trang Thông tin xác thực Google Cloud.

Yêu cầu không hợp lệ, thiếu phạm vi bắt buộc

Sau khi cấp quyền trong PCM, bạn có thể gặp lỗi "Yêu cầu không hợp lệ" là "Thiếu tham số bắt buộc: phạm vi". Đảm bảo giá trị scope mà bạn đang sử dụng trong các lệnh gọi uỷ quyền giống với giá trị mà bạn đặt cho Ứng dụng OAuth 2.0, như trên trang Thông tin xác thực Google Cloud.

URI chuyển hướng không khớp

Trong quá trình uỷ quyền, bạn có thể gặp lỗi "Chuyển hướng URI không khớp". Đảm bảo giá trị redirect_uri bạn đang sử dụng trong các lệnh gọi uỷ quyền giống với giá trị bạn đặt cho Ứng dụng OAuth 2.0, như trên trang Thông tin xác thực Google Cloud.

Tài liệu tham khảo nhanh

Hãy sử dụng tài liệu tham khảo này để triển khai nhanh các bước uỷ quyền user và liên kết Tài khoản Google của trẻ.

Để sử dụng tài liệu tham khảo nhanh này, hãy chỉnh sửa từng biến phần giữ chỗ trong mã mẫu có các giá trị dành cho tích hợp cụ thể của bạn, rồi sao chép và dán nếu cần:

1 PCM

Chuyển hướng user đến đường liên kết PCM trong ứng dụng, thay thế:

  1. project-id kèm theo Device Access Project mã nhận dạng của bạn
  2. oauth2-client-id bằng mã ứng dụng khách OAuth2 trong thông tin đăng nhập Google Cloud của bạn
  3. redirect-uri với URI chuyển hướng được chỉ định cho Mã ứng dụng khách OAuth2 mà bạn đang sử dụng
  4. scope với một trong các các phạm vi có sẵn của bạn
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/scope

2 mã xác thực

Sau khi cấp quyền thông qua PCM cho phạm vi mà bạn chọn, user sẽ được chuyển hướng đến URI chuyển hướng mà bạn đã chỉ định. Mã uỷ quyền được trả về dưới dạng tham số code trong URL và phải có định dạng sau:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

3 Mã truy cập

Sử dụng mã uỷ quyền để truy xuất mã truy cập mà bạn có thể dùng để thay mặt người dùng gọi API SDM.

Thực hiện lệnh gọi POST đến điểm cuối OAuth của Google, thay thế:

  1. oauth2-client-idoauth2-client-secret bằng Mã ứng dụng khách OAuth2 và Mật khẩu ứng dụng khách trong thông tin đăng nhập Google Cloud của bạn
  2. authorization-code bằng mã bạn đã nhận được ở bước trước đó
  3. redirect-uri với URI chuyển hướng được chỉ định cho Mã ứng dụng khách OAuth2 mà bạn đang sử dụng

Google OAuth trả về 2 mã thông báo, một mã truy cập và một mã làm mới.

Yêu cầu

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=redirect-uri'

Phản hồi

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

4 lệnh gọi API

Quá trình uỷ quyền chưa hoàn tất cho đến khi bạn thực hiện lệnh gọi API bằng mã truy cập của user. Lệnh gọi ban đầu này kết thúc quá trình uỷ quyền và kích hoạt các sự kiện.

Bạn phải sử dụng một trong các lệnh gọi API được liệt kê cho phạm vi đã chỉ định để hoàn tất quá trình uỷ quyền.

sdm.service

thiết bị

Hãy xem Tài liệu tham khảo về API devices.list để biết thêm thông tin.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

5 Mã làm mới

Mã truy cập cho API SDM chỉ có hiệu lực trong 1 giờ, như đã nêu trong tham số expires_in do Google OAuth trả về. Nếu mã truy cập của bạn hết hạn, hãy sử dụng mã làm mới để nhận mã mới.

Thực hiện lệnh gọi POST đến điểm cuối OAuth của Google, thay thế:

  1. oauth2-client-idoauth2-client-secret bằng Mã ứng dụng khách OAuth2 và Mật khẩu ứng dụng khách trong thông tin đăng nhập Google Cloud của bạn
  2. refresh-token bằng mã bạn nhận được khi lần đầu nhận mã truy cập.

Google OAuth trả về một mã truy cập mới.

Yêu cầu

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'

Phản hồi

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}