Tài liệu này giải thích cách các ứng dụng máy chủ web sử dụng Google API Client Libraries hoặc Google OAuth 2. 0 điểm cuối để triển khai OAuth 2. 0 ủy quyền để truy cập Google 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 của họ. Ví dụ: một ứng dụng có thể sử dụng OAuth 2. 0 để xin phép người dùng lưu trữ tệp trong Google Drive của họ
OAuth 2 này. 0 dành riêng cho ủy quyền người dùng. Nó được thiết kế cho các ứng dụng có thể lưu trữ thông tin bí mật và duy trì trạng thái. Ứng dụng máy chủ web được ủy quyền hợp lệ có thể truy cập API trong khi người dùng tương tác với ứng dụng hoặc sau khi người dùng rời khỏi ứng dụng
Các ứng dụng máy chủ web cũng thường sử dụng tài khoản dịch vụ để ủy quyền các yêu cầu API, đặc biệt khi gọi API đám mây để truy cập dữ liệu dựa trên dự án thay vì dữ liệu dành riêng cho người dùng. Các ứng dụng máy chủ web có thể sử dụng tài khoản dịch vụ cùng với sự cho phép của người dùng
Ghi chú. Do ý nghĩa bảo mật của việc triển khai chính xác, chúng tôi đặc biệt khuyến khích bạn sử dụng OAuth 2. 0 thư viện khi tương tác với OAuth 2 của Google. 0 điểm cuối. Cách tốt nhất là sử dụng mã được gỡ lỗi tốt do người khác cung cấp và nó sẽ giúp bạn bảo vệ chính mình và người dùng của mình. Để biết thêm thông tin, hãy xem Thư viện máy kháchthư viện máy khách
Các ví dụ cụ thể về ngôn ngữ trên trang này sử dụng Thư viện máy khách API của Google để triển khai OAuth 2. 0 ủy quyền. Để chạy các mẫu mã, trước tiên bạn phải cài đặt thư viện máy khách cho ngôn ngữ của mình
Khi bạn sử dụng Thư viện ứng dụng Google API để xử lý OAuth 2 của ứng dụng. 0, thư viện máy khách thực hiện nhiều hành động mà ứng dụng sẽ cần phải tự xử lý. Ví dụ: nó xác định thời điểm ứng dụng có thể sử dụng hoặc làm mới mã thông báo truy cập được lưu trữ cũng như thời điểm ứng dụng phải lấy lại sự đồng ý. Thư viện máy khách cũng tạo các URL chuyển hướng chính xác và giúp triển khai các trình xử lý chuyển hướng trao đổi mã ủy quyền để lấy mã thông báo truy cập
Thư viện máy khách API của Google dành cho các ứng dụng phía máy chủ có sẵn cho các ngôn ngữ sau
- Đi
- Java
- MẠNG LƯỚI
- Nút. js
- PHP
- con trăn
- hồng ngọc
điều kiện tiên quyết
Bật API cho dự án của bạn
Bất kỳ ứng dụng nào gọi API của Google đều cần bật các API đó trong Bảng điều khiển API
Để bật API cho dự án của bạn
- Mở Thư viện API trong Bảng điều khiển API của Google
- Nếu được nhắc, hãy chọn một dự án hoặc tạo một dự án mới
- Thư viện API liệt kê tất cả các API có sẵn, được nhóm theo dòng sản phẩm và mức độ phổ biến. Nếu API bạn muốn bật không hiển thị trong danh sách, hãy sử dụng tính năng tìm kiếm để tìm hoặc nhấp vào Xem tất cả trong dòng sản phẩm chứa API đó
- Chọn API bạn muốn bật, sau đó nhấp vào nút Bật
- Nếu được nhắc, hãy bật thanh toán
- Nếu được nhắc, hãy đọc và chấp nhận Điều khoản dịch vụ của API
Tạo thông tin ủy quyền
Bất kỳ ứng dụng nào sử dụng OAuth 2. 0 để truy cập Google API phải có thông tin đăng nhập ủy quyền xác định ứng dụng với OAuth 2 của Google. 0 máy chủ. Các bước sau 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 các API mà bạn đã bật cho dự án đó
- Chuyển đến trang Thông tin xác thực
- Nhấp vào Tạo thông tin xác thực > ID ứng dụng khách OAuth
- Chọn loại ứng dụng ứng dụng Web
- Điền vào biểu mẫu và nhấp vào Tạo. Các ứng dụng sử dụng các ngôn ngữ và khuôn khổ như PHP, Java, Python, Ruby và. NET phải chỉ định URI chuyển hướng được ủy quyền. URI chuyển hướng là điểm cuối mà OAuth 2. 0 máy chủ có thể gửi phản hồi. Các điểm cuối này phải tuân thủ các quy tắc xác thực của Google
Để thử nghiệm, bạn có thể chỉ định các URI tham chiếu đến máy cục bộ, chẳng hạn như
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth
8. Với ý nghĩ đó, xin lưu ý rằng tất cả các ví dụ trong tài liệu này đều sử dụng$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth
8 làm URI chuyển hướngChúng tôi khuyên bạn nên thiết kế điểm cuối xác thực của ứng dụng để ứng dụng của bạn không hiển thị mã ủy quyền cho các tài nguyên khác trên trang
Sau khi tạo thông tin đăng nhập của bạn, hãy tải xuống client_secret. json từ Bảng điều khiển API. Lưu trữ an toàn tệp ở vị trí mà chỉ ứng dụng của bạn mới có thể truy cập
Quan trọng. Không lưu trữ client_secret. json ở một vị trí có thể truy cập công khai. Ngoài ra, nếu bạn chia sẻ mã nguồn cho ứng dụng của mình — ví dụ: trên GitHub — hãy lưu trữ client_secret. json bên ngoài cây nguồn của bạn để tránh vô tình chia sẻ thông tin đăng nhập khách hàng của bạnXá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 các tài nguyên mà nó cần đồng thời cho phép người dùng kiểm soát lượng 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ạn bắt đầu triển khai OAuth 2. 0, chúng tôi khuyên bạn nên xác định các phạm vi mà ứng dụng của bạn sẽ cần có quyền truy cập
Chúng tôi cũng khuyên ứng dụng của bạn nên yêu cầu quyền truy cập vào phạm vi ủy quyền thông qua quy trình ủy quyền gia tăng, trong đó ứng dụng của bạn yêu cầu quyền truy cập vào dữ liệu người dùng theo ngữ cảnh. Phương pháp hay nhất này giúp người dùng hiểu dễ dàng hơn lý do tại sao ứng dụng của bạn cần quyền truy cập mà nó đang yêu cầu
OAuth 2. 0 Tài liệu Phạm vi API chứa danh sách đầy đủ các phạm vi mà bạn có thể sử dụng để truy cập Google API
Nếu ứng dụng công khai của bạn sử dụng các phạm vi cho phép truy cập vào một số dữ liệu người dùng nhất định, ứng dụng đó phải hoàn tất quy trình xác minh. Nếu bạn thấy ứng dụng chưa được xác minh trên màn hình khi kiểm tra ứng dụng của mình, bạn phải gửi yêu cầu xác minh để xóa ứng dụng đó. Tìm hiểu thêm về các ứng dụng chưa được xác minh và nhận câu trả lời cho các câu hỏi thường gặp về xác minh ứng dụng trong Trung tâm trợ giúpYêu cầu cụ thể về ngôn ngữ
Để chạy bất kỳ mẫu mã nào trong tài liệu này, bạn cần có tài khoản Google, truy cập Internet và trình duyệt web. Nếu bạn đang sử dụng một trong các thư viện máy khách API, hãy xem thêm các yêu cầu dành riêng cho ngôn ngữ bên dưới
Để chạy các mẫu mã PHP trong tài liệu này, bạn sẽ cần Thư viện ứng dụng Google API dành cho PHP Để chạy các mẫu mã Python trong tài liệu này, bạn sẽ cần Để chạy các mẫu mã Ruby trong tài liệu này, bạn sẽ cần Thư viện ứng dụng Google API dành cho Ruby Khung ứng dụng web Sinatra Ruby Để chạy nút. js mẫu trong tài liệu này, bạn sẽ cần Nút API của Google. ứng dụng khách js Bạn không cần cài đặt bất kỳ thư viện nào để có thể gọi trực tiếp OAuth 2. 0 điểm cuốiPHP
composer require google/apiclient:^2.10
con trăn
pip install --upgrade google-api-python-client
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
0, $client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
1 và $client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
2 để ủy quyền người dùng. pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
3. $client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
0hồng ngọc
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
1$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
2Nút. js
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
3HTTP/NGƯỜI
Lấy OAuth 2. 0 mã thông báo truy cập
Các bước sau đây cho biết cách ứng dụng của bạn tương tác với OAuth 2 của Google. 0 để có được sự đồng ý của người dùng để thực hiện yêu cầu API thay mặt người dùng. Ứng dụng của bạn phải có sự đồng ý đó trước khi có thể thực hiện yêu cầu Google API yêu cầu ủy quyền của người dùng
Danh sách dưới đây tóm tắt nhanh các bước này
- Ứng dụng của bạn xác định các quyền cần thiết
- Ứng dụng của bạn chuyển hướng người dùng tới Google cùng với danh sách các quyền được yêu cầu
- Người dùng quyết định có cấp quyền cho ứng dụng của bạn hay không
- Ứng dụng của bạn tìm ra những gì người dùng đã quyết định
- Nếu người dùng đã cấp các quyền được yêu cầu, ứng dụng của bạn sẽ truy xuất mã thông báo cần thiết để thực hiện các yêu cầu API thay cho người dùng
Bước 1. Đặt tham số ủy quyền
Bước đầu tiên của bạn là tạo yêu cầu ủy quyền. Yêu cầu đó đặt các tham số xác định ứng dụng của bạn và xác định các quyền mà người dùng sẽ được yêu cầu cấp cho ứng dụng của bạn
- Nếu bạn sử dụng thư viện ứng dụng khách của Google cho OAuth 2. 0 xác thực và ủy quyền, bạn tạo và định cấu hình một đối tượng xác định các tham số này
- Nếu bạn gọi Google OAuth 2. 0 trực tiếp, bạn sẽ tạo một URL và đặt các tham số trên URL đó
Các tab bên dưới xác định các tham số ủy quyền được hỗ trợ cho các ứng dụng máy chủ web. Các ví dụ về ngôn ngữ cụ thể cũng chỉ ra cách sử dụng thư viện máy khách hoặc thư viện ủy quyền để định cấu hình đối tượng đặt các tham số đó
Đoạn mã dưới đây tạo một đối tượng PHP
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
4, xác định các tham số trong yêu cầu ủy quyền
Đối tượng đó sử dụng thông tin từ client_secret của bạn. json để xác định ứng dụng của bạn. [Xem tạo thông tin ủy quyền để biết thêm về tệp đó. ] Đối tượng cũng xác định các phạm vi mà ứng dụng của bạn đang yêu cầu quyền truy cập và URL tới điểm cuối xác thực của ứng dụng, điểm cuối này sẽ xử lý phản hồi từ OAuth 2 của Google. 0 máy chủ. Cuối cùng, mã đặt các tham số
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5 và
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];6 tùy chọn
Ví dụ: mã này yêu cầu quyền truy cập ngoại tuyến, chỉ đọc vào Google Drive của người dùng
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth
Yêu cầu chỉ định các thông tin sau
Tham số$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7Bắt buộc
ID khách hàng cho ứng dụng của bạn. Bạn có thể tìm thấy giá trị này trong trang Thông tin xác thực bảng điều khiển API
Trong PHP, gọi hàm
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];8 để tải thông tin ủy quyền từ client_secret. tập tin json
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9Bắt buộc
Xác định nơi máy chủ API chuyển hướng người dùng sau khi người dùng hoàn thành quy trình ủy quyền. Giá trị phải khớp chính xác với một trong các URI chuyển hướng được ủy quyền cho OAuth 2. 0 mà bạn đã định cấu hình trong trang Thông tin xác thực bảng điều khiển API của ứng dụng khách của mình. Nếu giá trị này không khớp với URI chuyển hướng được ủy quyền cho
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7 được cung cấp, bạn sẽ gặp lỗi
pip install --upgrade google-api-python-client01
Lưu ý rằng lược đồ, trường hợp và dấu gạch chéo sau
pip install --upgrade google-api-python-client02 hoặc
pip install --upgrade google-api-python-client03 ['
pip install --upgrade google-api-python-client04'] phải khớp với nhau
Để đặt giá trị này trong PHP, hãy gọi hàm
pip install --upgrade google-api-python-client05. Lưu ý rằng bạn phải chỉ định một URI chuyển hướng hợp lệ cho
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7 được cung cấp
pip install --upgrade google-api-python-client0
pip install --upgrade google-api-python-client07Bắt buộc
Danh sách phạm vi được phân tách bằng dấu cách xác định các tài nguyên mà ứng dụng của bạn có thể truy cập thay mặt cho người dùng. Các giá trị này thông báo về 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 các tài nguyên mà nó cần đồng thời cho phép người dùng kiểm soát lượng truy cập mà họ cấp cho ứng dụng của bạn. Do đó, có một 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
Để đặt giá trị này trong PHP, hãy gọi hàm
pip install --upgrade google-api-python-client08
pip install --upgrade google-api-python-client1
Chúng tôi khuyên ứng dụng của bạn nên yêu cầu quyền truy cập vào phạm vi ủy quyền theo ngữ cảnh bất cứ khi nào có thể. Bằng cách yêu cầu quyền truy cập vào dữ liệu người dùng theo ngữ cảnh, thông qua ủy quyền gia tăng, bạn giúp người dùng dễ hiểu hơn lý do tại sao ứng dụng của bạn cần quyền truy cập mà ứng dụng đang yêu cầu
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5Được đề xuất
Cho biết liệu ứng dụng của bạn có thể làm mới mã thông báo truy cập khi người dùng không có mặt trên trình duyệt hay không. Các giá trị tham số hợp lệ là
pip install --upgrade google-api-python-client10, là giá trị mặc định và
pip install --upgrade google-api-python-client11
Đặt giá trị thành
pip install --upgrade google-api-python-client11 nếu ứng dụng của bạn cần làm mới mã thông báo truy cập khi người dùng không có mặt trên trình duyệt. Đây là phương pháp làm mới mã thông báo truy cập được mô tả sau trong tài liệu này. Giá trị này hướng dẫn máy chủ ủy quyền của Google trả lại mã thông báo làm mới và mã thông báo truy cập vào lần đầu tiên ứng dụng của bạn trao đổi mã ủy quyền cho mã thông báo
Để đặt giá trị này trong PHP, hãy gọi hàm
pip install --upgrade google-api-python-client13
pip install --upgrade google-api-python-client2____314Đề xuất
Chỉ định bất kỳ giá trị chuỗi nào mà ứng dụng của bạn sử dụng để duy trì trạng thái giữa yêu cầu ủy quyền của bạn và phản hồi của máy chủ ủy quyền. Máy chủ trả về giá trị chính xác mà bạn gửi dưới dạng cặp
pip install --upgrade google-api-python-client15 trong thành phần truy vấn URL [
pip install --upgrade google-api-python-client16] của
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9 sau khi người dùng đồng ý hoặc từ chối yêu cầu truy cập ứng dụng của bạn
Bạn có thể sử dụng tham số này cho một số mục đích, chẳng hạn như hướng người dùng đến đúng tài nguyên trong ứng dụng của bạn, gửi nonces và giảm thiểu giả mạo yêu cầu trên nhiều trang web. Vì có thể đoán được
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9 của bạn, nên việc sử dụng giá trị
pip install --upgrade google-api-python-client14 có thể làm tăng sự đảm bảo của bạn rằng kết nối đến là kết quả của một yêu cầu xác thực. Nếu bạn tạo một chuỗi ngẫu nhiên hoặc mã hóa hàm băm của cookie hoặc giá trị khác nắm bắt trạng thái của ứng dụng khách, thì 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, cung cấp khả năng bảo vệ chống lại các cuộc tấn công chẳng hạn như liên trang . Xem tài liệu OpenID Connect để biết ví dụ về cách tạo và xác nhận mã thông báo
pip install --upgrade google-api-python-client14
Để đặt giá trị này trong PHP, hãy gọi hàm
pip install --upgrade google-api-python-client21
pip install --upgrade google-api-python-client3____46Tùy chọn
Cho phép các ứng dụng sử dụng ủy quyền gia tăng để yêu cầu quyền truy cập vào các phạm vi bổ sung trong ngữ cảnh. Nếu bạn đặt giá trị của tham số này thành
pip install --upgrade google-api-python-client23 và yêu cầu ủy quyền được cấp, thì mã thông báo truy cập mới cũng sẽ bao gồm mọi phạm vi mà người dùng đã cấp quyền truy cập ứng dụng trước đó. Xem phần ủy quyền gia tăng để biết ví dụ
Để đặt giá trị này trong PHP, hãy gọi hàm
pip install --upgrade google-api-python-client24
pip install --upgrade google-api-python-client4____325Tùy chọn
Nếu ứng dụng của bạn biết người dùng nào đang cố xác thực, ứng dụng có thể sử dụng tham số này để cung cấp gợi ý cho Máy chủ xác thực của Google. Máy chủ sử dụng gợi ý để đơn giản hóa quy trình đăng nhập bằng cách điền trước 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 mã định danh
pip install --upgrade google-api-python-client26, tương đương với ID Google của người dùng
Để đặt giá trị này trong PHP, hãy gọi hàm
pip install --upgrade google-api-python-client27
pip install --upgrade google-api-python-client5
pip install --upgrade google-api-python-client28Tùy chọn
Danh sách lời nhắc được phân tách bằng dấu cách, phân biệt chữ hoa chữ thường để hiển thị người dùng. Nếu bạn không chỉ định tham số này, người dùng sẽ chỉ được nhắc khi dự án của bạn yêu cầu quyền truy cập lần đầu tiên. Xem Nhắc lại sự đồng ý để biết thêm thông tin
Để đặt giá trị này trong PHP, hãy gọi hàm
pip install --upgrade google-api-python-client29
pip install --upgrade google-api-python-client6
giá trị có thể là
pip install --upgrade google-api-python-client30Không hiển thị bất kỳ màn hình xác thực hoặc đồng ý nào. Không được chỉ định với các giá trị khác.
pip install --upgrade google-api-python-client31Nhắc người dùng đồng ý.
pip install --upgrade google-api-python-client32Nhắc người dùng chọn một tài khoản
con trăn
Đoạn mã sau sử dụng mô-đun
pip install --upgrade google-api-python-client33 để xây dựng yêu cầu ủy quyền
Mã này xây dựng một đối tượng
pip install --upgrade google-api-python-client34, xác định ứng dụng của bạn bằng cách sử dụng thông tin từ client_secret. json mà bạn đã tải xuống sau khi tạo thông tin đăng nhập ủy quyền. Đối tượng đó cũng xác định phạm vi mà ứng dụng của bạn đang yêu cầu quyền truy cập và URL tới điểm cuối xác thực của ứng dụng, điểm cuối này sẽ xử lý phản hồi từ OAuth 2 của Google. 0 máy chủ. Cuối cùng, mã đặt các tham số
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5 và
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];6 tùy chọn
Ví dụ: mã này yêu cầu quyền truy cập ngoại tuyến, chỉ đọc vào Google Drive của người dùng
pip install --upgrade google-api-python-client7
Yêu cầu chỉ định các thông tin sau
Tham số$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7Bắt buộc
ID khách hàng cho ứng dụng của bạn. Bạn có thể tìm thấy giá trị này trong trang Thông tin xác thực bảng điều khiển API
Trong Python, gọi phương thức
pip install --upgrade google-api-python-client38 để truy xuất ID ứng dụng khách từ client_secret. tập tin json. [Bạn cũng có thể sử dụng phương thức
pip install --upgrade google-api-python-client39, phương thức này chuyển cấu hình ứng dụng khách như ban đầu nó xuất hiện trong tệp bí mật ứng dụng khách nhưng không truy cập chính tệp đó. ]
pip install --upgrade google-api-python-client8
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9Bắt buộc
Xác định nơi máy chủ API chuyển hướng người dùng sau khi người dùng hoàn thành quy trình ủy quyền. Giá trị phải khớp chính xác với một trong các URI chuyển hướng được ủy quyền cho OAuth 2. 0 mà bạn đã định cấu hình trong trang Thông tin xác thực bảng điều khiển API của ứng dụng khách của mình. Nếu giá trị này không khớp với URI chuyển hướng được ủy quyền cho
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7 được cung cấp, bạn sẽ gặp lỗi
pip install --upgrade google-api-python-client01
Lưu ý rằng lược đồ, trường hợp và dấu gạch chéo sau
pip install --upgrade google-api-python-client02 hoặc
pip install --upgrade google-api-python-client03 ['
pip install --upgrade google-api-python-client04'] phải khớp với nhau
Để đặt giá trị này trong Python, hãy đặt thuộc tính
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9 của đối tượng
pip install --upgrade google-api-python-client46
pip install --upgrade google-api-python-client9
pip install --upgrade google-api-python-client07Bắt buộc
Danh sách các phạm vi xác định các tài nguyên mà ứng dụng của bạn có thể truy cập thay cho người dùng. Các giá trị này thông báo về 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 các tài nguyên mà nó cần đồng thời cho phép người dùng kiểm soát lượng truy cập mà họ cấp cho ứng dụng của bạn. Do đó, có một 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
Trong Python, sử dụng cùng một phương pháp bạn sử dụng để đặt
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7 để chỉ định danh sách phạm vi
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib20
Chúng tôi khuyên ứng dụng của bạn nên yêu cầu quyền truy cập vào phạm vi ủy quyền theo ngữ cảnh bất cứ khi nào có thể. Bằng cách yêu cầu quyền truy cập vào dữ liệu người dùng theo ngữ cảnh, thông qua ủy quyền gia tăng, bạn giúp người dùng dễ hiểu hơn lý do tại sao ứng dụng của bạn cần quyền truy cập mà ứng dụng đang yêu cầu
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5Được đề xuất
Cho biết liệu ứng dụng của bạn có thể làm mới mã thông báo truy cập khi người dùng không có mặt trên trình duyệt hay không. Các giá trị tham số hợp lệ là
pip install --upgrade google-api-python-client10, là giá trị mặc định và
pip install --upgrade google-api-python-client11
Đặt giá trị thành
pip install --upgrade google-api-python-client11 nếu ứng dụng của bạn cần làm mới mã thông báo truy cập khi người dùng không có mặt trên trình duyệt. Đây là phương pháp làm mới mã thông báo truy cập được mô tả sau trong tài liệu này. Giá trị này hướng dẫn máy chủ ủy quyền của Google trả lại mã thông báo làm mới và mã thông báo truy cập vào lần đầu tiên ứng dụng của bạn trao đổi mã ủy quyền cho mã thông báo
Trong Python, đặt tham số
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5 bằng cách chỉ định
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5 làm đối số từ khóa khi gọi phương thức
pip install --upgrade google-api-python-client56
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib21____314Đề xuất
Chỉ định bất kỳ giá trị chuỗi nào mà ứng dụng của bạn sử dụng để duy trì trạng thái giữa yêu cầu ủy quyền của bạn và phản hồi của máy chủ ủy quyền. Máy chủ trả về giá trị chính xác mà bạn gửi dưới dạng cặp
pip install --upgrade google-api-python-client15 trong thành phần truy vấn URL [
pip install --upgrade google-api-python-client16] của
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9 sau khi người dùng đồng ý hoặc từ chối yêu cầu truy cập ứng dụng của bạn
Bạn có thể sử dụng tham số này cho một số mục đích, chẳng hạn như hướng người dùng đến đúng tài nguyên trong ứng dụng của bạn, gửi nonces và giảm thiểu giả mạo yêu cầu trên nhiều trang web. Vì có thể đoán được
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9 của bạn, nên việc sử dụng giá trị
pip install --upgrade google-api-python-client14 có thể làm tăng sự đảm bảo của bạn rằng kết nối đến là kết quả của một yêu cầu xác thực. Nếu bạn tạo một chuỗi ngẫu nhiên hoặc mã hóa hàm băm của cookie hoặc giá trị khác nắm bắt trạng thái của ứng dụng khách, thì 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, cung cấp khả năng bảo vệ chống lại các cuộc tấn công chẳng hạn như liên trang . Xem tài liệu OpenID Connect để biết ví dụ về cách tạo và xác nhận mã thông báo
pip install --upgrade google-api-python-client14
Trong Python, đặt tham số
pip install --upgrade google-api-python-client14 bằng cách chỉ định
pip install --upgrade google-api-python-client14 làm đối số từ khóa khi gọi phương thức
pip install --upgrade google-api-python-client56
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib22
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];6Tùy chọn
Cho phép các ứng dụng sử dụng ủy quyền gia tăng để yêu cầu quyền truy cập vào các phạm vi bổ sung trong ngữ cảnh. Nếu bạn đặt giá trị của tham số này thành
pip install --upgrade google-api-python-client23 và yêu cầu ủy quyền được cấp, thì mã thông báo truy cập mới cũng sẽ bao gồm mọi phạm vi mà người dùng đã cấp quyền truy cập ứng dụng trước đó. Xem phần ủy quyền gia tăng để biết ví dụ
Trong Python, đặt tham số
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];6 bằng cách chỉ định
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];6 làm đối số từ khóa khi gọi phương thức
pip install --upgrade google-api-python-client56
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib23____325Tùy chọn
Nếu ứng dụng của bạn biết người dùng nào đang cố xác thực, ứng dụng có thể sử dụng tham số này để cung cấp gợi ý cho Máy chủ xác thực của Google. Máy chủ sử dụng gợi ý để đơn giản hóa quy trình đăng nhập bằng cách điền trước 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 mã định danh
pip install --upgrade google-api-python-client26, tương đương với ID Google của người dùng
Trong Python, đặt tham số
pip install --upgrade google-api-python-client25 bằng cách chỉ định
pip install --upgrade google-api-python-client25 làm đối số từ khóa khi gọi phương thức
pip install --upgrade google-api-python-client56
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib24
pip install --upgrade google-api-python-client28Tùy chọn
Danh sách lời nhắc được phân tách bằng dấu cách, phân biệt chữ hoa chữ thường để hiển thị người dùng. Nếu bạn không chỉ định tham số này, người dùng sẽ chỉ được nhắc khi dự án của bạn yêu cầu quyền truy cập lần đầu tiên. Xem Nhắc lại sự đồng ý để biết thêm thông tin
Trong Python, đặt tham số
pip install --upgrade google-api-python-client28 bằng cách chỉ định
pip install --upgrade google-api-python-client28 làm đối số từ khóa khi gọi phương thức
pip install --upgrade google-api-python-client56
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib25
giá trị có thể là
pip install --upgrade google-api-python-client30Không hiển thị bất kỳ màn hình xác thực hoặc đồng ý nào. Không được chỉ định với các giá trị khác.
pip install --upgrade google-api-python-client31Nhắc người dùng đồng ý.
pip install --upgrade google-api-python-client32Nhắc người dùng chọn một tài khoản
hồng ngọc
Sử dụng client_secrets. json mà bạn đã tạo để định cấu hình đối tượng máy khách trong ứng dụng của mình. Khi định cấu hình đối tượng máy khách, bạn chỉ định phạm vi mà ứng dụng của mình cần truy cập, cùng với URL tới điểm cuối xác thực của ứng dụng, điểm cuối này sẽ xử lý phản hồi từ OAuth 2. 0 máy chủ
Ví dụ: mã này yêu cầu quyền truy cập ngoại tuyến, chỉ đọc vào Google Drive của người dùng
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib26
Ứng dụng của bạn sử dụng đối tượng máy khách để thực hiện OAuth 2. 0, chẳng hạn như tạo URL yêu cầu ủy quyền và áp dụng mã thông báo truy cập cho các yêu cầu HTTP
Nút. js
Đoạn mã dưới đây tạo một đối tượng
pip install --upgrade google-api-python-client84, xác định các tham số trong yêu cầu ủy quyền
Đối tượng đó sử dụng thông tin từ client_secret của bạn. json để xác định ứng dụng của bạn. Để yêu cầu người dùng cấp quyền truy xuất mã thông báo truy cập, bạn chuyển hướng họ đến trang đồng ý. Cách tạo URL trang đồng ý
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib27
Lưu ý quan trọng -
pip install --upgrade google-api-python-client85 chỉ được trả lại trong lần ủy quyền đầu tiên. Thêm chi tiết tại đây
HTTP/NGƯỜI
OAuth 2 của Google. 0 điểm cuối là tại
pip install --upgrade google-api-python-client86. Chỉ có thể truy cập điểm cuối này qua HTTPS. Kết nối HTTP đơn giản bị từ chối
Máy chủ ủy quyền của Google hỗ trợ các tham số chuỗi truy vấn sau cho các ứng dụng máy chủ web
Tham số$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7Bắt buộc
ID khách hàng cho ứng dụng của bạn. Bạn có thể tìm thấy giá trị này trong trang Thông tin xác thực bảng điều khiển API
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9Bắt buộc
Xác định nơi máy chủ API chuyển hướng người dùng sau khi người dùng hoàn thành quy trình ủy quyền. Giá trị phải khớp chính xác với một trong các URI chuyển hướng được ủy quyền cho OAuth 2. 0 mà bạn đã định cấu hình trong trang Thông tin xác thực bảng điều khiển API của ứng dụng khách của mình. Nếu giá trị này không khớp với URI chuyển hướng được ủy quyền cho
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7 được cung cấp, bạn sẽ gặp lỗi
pip install --upgrade google-api-python-client01
Lưu ý rằng lược đồ, trường hợp và dấu gạch chéo sau
pip install --upgrade google-api-python-client02 hoặc
pip install --upgrade google-api-python-client03 ['
pip install --upgrade google-api-python-client04'] phải khớp với nhau
pip install --upgrade google-api-python-client94Bắt buộc
Xác định xem Google OAuth 2. 0 điểm cuối trả về mã ủy quyền
Đặt giá trị tham số thành
pip install --upgrade google-api-python-client95 cho các ứng dụng máy chủ web
pip install --upgrade google-api-python-client07Bắt buộc
Danh sách phạm vi được phân tách bằng dấu cách xác định các tài nguyên mà ứng dụng của bạn có thể truy cập thay mặt cho người dùng. Các giá trị này thông báo về 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 các tài nguyên mà nó cần đồng thời cho phép người dùng kiểm soát lượng truy cập mà họ cấp cho ứng dụng của bạn. Do đó, có một 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
Chúng tôi khuyên ứng dụng của bạn nên yêu cầu quyền truy cập vào phạm vi ủy quyền theo ngữ cảnh bất cứ khi nào có thể. Bằng cách yêu cầu quyền truy cập vào dữ liệu người dùng theo ngữ cảnh, thông qua ủy quyền gia tăng, bạn giúp người dùng dễ hiểu hơn lý do tại sao ứng dụng của bạn cần quyền truy cập mà ứng dụng đang yêu cầu
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5Được đề xuất
Cho biết liệu ứng dụng của bạn có thể làm mới mã thông báo truy cập khi người dùng không có mặt trên trình duyệt hay không. Các giá trị tham số hợp lệ là
pip install --upgrade google-api-python-client10, là giá trị mặc định và
pip install --upgrade google-api-python-client11
Đặt giá trị thành
pip install --upgrade google-api-python-client11 nếu ứng dụng của bạn cần làm mới mã thông báo truy cập khi người dùng không có mặt trên trình duyệt. Đây là phương pháp làm mới mã thông báo truy cập được mô tả sau trong tài liệu này. Giá trị này hướng dẫn máy chủ ủy quyền của Google trả lại mã thông báo làm mới và mã thông báo truy cập vào lần đầu tiên ứng dụng của bạn trao đổi mã ủy quyền cho mã thông báo
pip install --upgrade google-api-python-client14Được đề xuất
Chỉ định bất kỳ giá trị chuỗi nào mà ứng dụng của bạn sử dụng để duy trì trạng thái giữa yêu cầu ủy quyền của bạn và phản hồi của máy chủ ủy quyền. Máy chủ trả về giá trị chính xác mà bạn gửi dưới dạng cặp
pip install --upgrade google-api-python-client15 trong thành phần truy vấn URL [
pip install --upgrade google-api-python-client16] của
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9 sau khi người dùng đồng ý hoặc từ chối yêu cầu truy cập ứng dụng của bạn
Bạn có thể sử dụng tham số này cho một số mục đích, chẳng hạn như hướng người dùng đến đúng tài nguyên trong ứng dụng của bạn, gửi nonces và giảm thiểu giả mạo yêu cầu trên nhiều trang web. Vì có thể đoán được
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9 của bạn, nên việc sử dụng giá trị
pip install --upgrade google-api-python-client14 có thể làm tăng sự đảm bảo của bạn rằng kết nối đến là kết quả của một yêu cầu xác thực. Nếu bạn tạo một chuỗi ngẫu nhiên hoặc mã hóa hàm băm của cookie hoặc giá trị khác nắm bắt trạng thái của ứng dụng khách, thì 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, cung cấp khả năng bảo vệ chống lại các cuộc tấn công chẳng hạn như liên trang . Xem tài liệu OpenID Connect để biết ví dụ về cách tạo và xác nhận mã thông báo
pip install --upgrade google-api-python-client14
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];6Tùy chọn
Cho phép các ứng dụng sử dụng ủy quyền gia tăng để yêu cầu quyền truy cập vào các phạm vi bổ sung trong ngữ cảnh. Nếu bạn đặt giá trị của tham số này thành
pip install --upgrade google-api-python-client23 và yêu cầu ủy quyền được cấp, thì mã thông báo truy cập mới cũng sẽ bao gồm mọi phạm vi mà người dùng đã cấp quyền truy cập ứng dụng trước đó. Xem phần ủy quyền gia tăng để biết ví dụ
pip install --upgrade google-api-python-client25Tùy chọn
Nếu ứng dụng của bạn biết người dùng nào đang cố xác thực, ứng dụng có thể sử dụng tham số này để cung cấp gợi ý cho Máy chủ xác thực của Google. Máy chủ sử dụng gợi ý để đơn giản hóa quy trình đăng nhập bằng cách điền trước 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 mã định danh
pip install --upgrade google-api-python-client26, tương đương với ID Google của người dùng
pip install --upgrade google-api-python-client28Tùy chọn
Danh sách lời nhắc được phân tách bằng dấu cách, phân biệt chữ hoa chữ thường để hiển thị người dùng. Nếu bạn không chỉ định tham số này, người dùng sẽ chỉ được nhắc khi dự án của bạn yêu cầu quyền truy cập lần đầu tiên. Xem Nhắc lại sự đồng ý để biết thêm thông tin
giá trị có thể là
pip install --upgrade google-api-python-client30Không hiển thị bất kỳ màn hình xác thực hoặc đồng ý nào. Không được chỉ định với các giá trị khác.
pip install --upgrade google-api-python-client31Nhắc người dùng đồng ý.
pip install --upgrade google-api-python-client32Nhắc người dùng chọn một tài khoản
Bước 2. Chuyển hướng đến OAuth 2 của Google. 0 máy chủ
Chuyển hướng người dùng đến OAuth 2 của Google. 0 để bắt đầu quá trình xác thực và ủy quyền. Thông thường, điều này xảy ra khi ứng dụng của bạn lần đầu tiên cần truy cập dữ liệu của người dùng. Trong trường hợp ủy quyền gia tăng, bước này cũng xảy ra khi ứng dụng của bạn lần đầu tiên cần truy cập các tài nguyên bổ sung mà nó chưa có quyền truy cập
Ví dụ này cho thấy cách chuyển hướng người dùng đến URL ủy quyền bằng khung ứng dụng web Flask Một URL ví dụ được hiển thị bên dưới, với các ngắt dòng và khoảng trắng để dễ đọc Sau khi bạn tạo URL yêu cầu, hãy chuyển hướng người dùng đến đóPHP
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
8pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
16. pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
9con trăn
pip install --upgrade flask
0hồng ngọc
pip install --upgrade flask
1pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
17Nút. js
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
18 từ phương pháp pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
19 ở Bước 1 để yêu cầu quyền truy cập từ OAuth 2 của Google. 0 máy chủpip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
18. pip install --upgrade flask
2HTTP/NGƯỜI
Chuyển hướng mẫu đến máy chủ ủy quyền của Google
pip install --upgrade flask
3
OAuth 2 của Google. 0 xác thực người dùng và nhận được sự đồng ý từ người dùng để ứng dụng của bạn truy cập vào các phạm vi được yêu cầu. Phản hồi được gửi lại cho ứng dụng của bạn bằng URL chuyển hướng mà bạn đã chỉ định
Bước 3. Google nhắc người dùng đồng ý
Trong bước này, người dùng 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 ý hiển thị tên ứng dụng của bạn và các dịch vụ Google API mà nó đang yêu cầu quyền truy cập bằng thông tin đăng nhập ủy quyền của người dùng và tóm tắt phạm vi quyền truy cập đượ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 phải làm gì ở giai đoạn này vì nó chờ phản hồi từ OAuth 2 của Google. 0 máy chủ cho biết liệu có bất kỳ 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 sau
lỗi
Yêu cầu đối với OAuth 2 của Google. 0 điểm cuối ủy quyền có thể hiển thị thông báo lỗi do người dùng gặp phải thay vì luồng xác thực và ủy quyền dự kiến. Mã lỗi phổ biến và giải pháp được đề xuất được liệt kê bên dưới
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib221
Tài khoản Google không thể ủy quyền cho 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 của họ. Xem bài viết trợ giúp về Quản trị viên Google Workspace Kiểm soát ứng dụng nội bộ và 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 khách OAuth của bạn
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib222
Điểm cuối ủy quyền được hiển thị bên trong tác nhân người dùng nhúng không được OAuth 2 của Google cho phép. 0 chính sách
Các nhà phát triển Android có thể gặp phải thông báo lỗi này khi mở các yêu cầu ủy quyền trong
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib223. Thay vào đó, các nhà phát triển nên sử dụng các thư viện Android như Đăng nhập bằng Google cho Android hoặc AppAuth của OpenID Foundation cho Android
Các nhà phát triển web có thể gặp phải lỗi này khi ứng dụng Android mở một liên kết web chung trong tác nhân người dùng được nhúng và người dùng điều hướng đến OAuth 2 của Google. 0 điểm cuối ủy quyền từ trang web của bạn. Nhà phát triển nên cho phép mở các liên kết chung trong trình xử lý liên kết mặc định của hệ điều hành, bao gồm cả trình xử lý Liên kết ứng dụng Android hoặc ứng dụng trình duyệt mặc định. Thư viện Android Custom Tabs cũng là một tùy chọn được hỗ trợ
Nhà phát triển iOS và macOS có thể gặp phải lỗi này khi mở yêu cầu cấp quyền trong
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib224. Thay vào đó, các nhà phát triển nên sử dụng các thư viện iOS như Đăng nhập bằng Google cho iOS hoặc AppAuth của OpenID Foundation cho iOS
Các nhà phát triển web có thể gặp phải lỗi này khi ứng dụng iOS hoặc macOS mở một liên kết web chung trong tác nhân người dùng được nhúng và người dùng điều hướng đến OAuth 2 của Google. 0 điểm cuối ủy quyền từ trang web của bạn. Nhà phát triển nên cho phép mở các liên kết chung trong trình xử lý liên kết mặc định của hệ điều hành, bao gồm cả trình xử lý Liên kết chung hoặc ứng dụng trình duyệt mặc định. Thư viện
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib225 cũng là một tùy chọn được hỗ trợ
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib226
ID ứng dụng khách OAuth trong yêu cầu là một phần của dự án hạn chế 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ề tùy 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 chấp thuận OAuth của bạn
pip install --upgrade google-api-python-client01
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9 được chuyển trong yêu cầu ủy quyền không khớp với URI chuyển hướng được ủy quyền cho ID ứng dụng khách OAuth. Xem lại các URI chuyển hướng được ủy quyền trong trang Thông tin đăng nhập bảng điều khiển API của Google
Bước 4. Xử lý OAuth 2. 0 phản hồi của máy chủ
OAuth 2. 0 phản hồi yêu cầu truy cập ứng dụng của bạn bằng cách sử dụng URL được chỉ định trong yêu cầu
Nếu người dùng chấp thuận yêu cầu truy cập, thì phản hồi chứa mã ủy quyền. Nếu người dùng không chấp thuận yêu cầu, phản hồi chứa thông báo lỗi. Mã ủy quyền hoặc thông báo lỗi được trả về máy chủ web sẽ xuất hiện trên chuỗi truy vấn, như minh họa bên dưới
Phản hồi lỗi
pip install --upgrade flask4
Phản hồi mã ủy quyền
pip install --upgrade flask5Quan trọng. Nếu điểm cuối phản hồi của bạn hiển thị trang HTML, mọi tài nguyên trên trang đó sẽ có thể thấy mã ủy quyền trong URL. Tập lệnh có thể đọc URL trực tiếp và URL trong tiêu đề HTTP
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib229 có thể được gửi tới bất kỳ hoặc tất cả các tài nguyên trên trang
Cân nhắc cẩn thận xem bạn có muốn gửi thông tin đăng nhập ủy quyền tới tất cả các tài nguyên trên trang đó hay không [đặc biệt là các tập lệnh của bên thứ ba như plugin xã hội và phân tích]. Để tránh sự cố này, chúng tôi khuyên máy chủ nên xử lý yêu cầu trước, sau đó chuyển hướng đến một URL khác không bao gồm các tham số phản hồi
OAuth mẫu 2. 0 phản hồi của máy chủ
Bạn có thể kiểm tra quy trình này bằng cách nhấp vào URL mẫu sau. URL này yêu cầu quyền truy cập chỉ đọc để xem siêu dữ liệu cho các tệp trong Google Drive của bạn
pip install --upgrade flask6
Sau khi hoàn thành OAuth 2. 0, bạn sẽ được chuyển hướng đến
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib230, điều này có thể sẽ gây ra lỗi
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib231 trừ khi máy cục bộ của bạn cung cấp tệp tại địa chỉ đó. Bước tiếp theo cung cấp thêm chi tiết về thông tin được trả về trong URI khi người dùng được chuyển hướng trở lại ứng dụng của bạn
Bước 5. Trao đổi mã ủy quyền để làm mới và truy cập mã thông báo
Sau khi máy chủ web nhận được mã ủy quyền, nó có thể trao đổi mã ủy quyền để lấy mã thông báo truy cập
Để trao đổi mã ủy quyền lấy mã thông báo truy cập, hãy sử dụng phương pháp PHP
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
32
pip install --upgrade flask7
Bạn có thể truy xuất mã thông báo truy cập bằng phương pháp
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib233
pip install --upgrade flask8
con trăn
Trên trang gọi lại của bạn, hãy sử dụng thư viện
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];0 để xác minh phản hồi của máy chủ ủy quyền. Sau đó, sử dụng phương pháp
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib235 để trao đổi mã ủy quyền trong phản hồi đó lấy mã thông báo truy cập
pip install --upgrade flask9
hồng ngọc
Để trao đổi mã ủy quyền lấy mã thông báo truy cập, hãy sử dụng phương pháp
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib236
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth00
Nút. js
Để trao đổi mã ủy quyền lấy mã thông báo truy cập, hãy sử dụng phương pháp
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib237
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth01
HTTP/NGƯỜI
Để trao đổi mã ủy quyền lấy mã thông báo truy cập, hãy gọi điểm cuối
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib238 và đặt các tham số sauCác trường
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7ID ứng dụng khách có được từ trang Thông tin xác thực của bảng điều khiển API.
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib240Bí mật ứng dụng khách thu được từ trang Thông tin xác thực bảng điều khiển API.
pip install --upgrade google-api-python-client95Mã ủy quyền được trả về từ yêu cầu ban đầu.
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib242Như được định nghĩa trong OAuth 2. 0, giá trị của trường này phải được đặt thành
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib243.
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];9Một trong các URI chuyển hướng được liệt kê cho dự án của bạn trong trang Thông tin xác thực của bảng điều khiển API cho
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7 đã cho
Đoạn mã sau hiển thị một yêu cầu mẫu
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth02
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ã thông báo truy cập tồn tại trong thời gian ngắn và mã thông báo làm mới. Lưu ý rằng mã thông báo làm mới chỉ được trả lại nếu ứng dụng của bạn đặt tham số
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5 thành
pip install --upgrade google-api-python-client11 trong yêu cầu ban đầu tới máy chủ ủy quyền của Google
Phản hồi chứa các trường sau
Các trườngpip install --upgrade google-auth google-auth-oauthlib google-auth-httplib248Mã thông báo mà ứng dụng của bạn gửi để ủy quyền cho một yêu cầu Google API.
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib249Thời gian tồn tại còn lại của mã thông báo truy cập tính bằng giây. Mã thông báo
pip install --upgrade google-api-python-client85A mà bạn có thể sử dụng để nhận mã thông báo truy cập mới. Mã thông báo làm mới có hiệu lực cho đến khi người dùng thu hồi quyền truy cập. Một lần nữa, trường này chỉ xuất hiện trong phản hồi này nếu bạn đặt tham số
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5 thành
pip install --upgrade google-api-python-client11 trong yêu cầu ban đầu tới máy chủ ủy quyền của Google.
pip install --upgrade google-api-python-client07Phạm vi truy cập được cấp bởi
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib248 được thể hiện dưới dạng danh sách các chuỗi phân biệt chữ hoa chữ thường, phân cách bằng dấu cách.
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib255Loại mã thông báo được trả lại. Tại thời điểm này, giá trị của trường này luôn được đặt thành
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib256. Quan trọng. Ứng dụng của bạn nên lưu trữ cả hai mã thông báo ở một vị trí an toàn, tồn tại lâu dài, có thể truy cập được giữa các lần gọi khác nhau của ứng dụng của bạn. Mã thông báo làm mới cho phép ứng dụng của bạn nhận mã thông báo truy cập mới nếu mã thông báo bạn đã hết hạn. Như vậy, nếu ứng dụng của bạn mất mã thông báo làm mới, người dùng sẽ cần lặp lại OAuth 2. 0 để ứng dụng của bạn có thể nhận được mã thông báo làm mới mới
Đoạn mã sau hiển thị một phản hồi mẫu
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth03Ghi chú. Ứng dụng của bạn nên bỏ qua mọi trường không được nhận dạng có trong phản hồi
Gọi các API của Google
Sử dụng mã thông báo truy cập để gọi Google API bằng cách hoàn tất các bước sau Sau khi nhận được mã thông báo truy cập, ứng dụng của bạn có thể sử dụng mã thông báo đó để ủy quyền các yêu cầu API thay mặt cho một tài khoản người dùng hoặc tài khoản dịch vụ nhất định. Sử dụng thông tin đăng nhập ủy quyền dành riêng cho người dùng để tạo đối tượng dịch vụ cho API mà bạn muốn gọi, sau đó sử dụng đối tượng đó để thực hiện các yêu cầu API được ủy quyền Sử dụng đối tượng PHP
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
57 mới — ví dụ: nếu bạn đã lưu trữ mã thông báo truy cập trong phiên người dùng — hãy sử dụng phương thức pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
58. $client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
04pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
57 được ủy quyền cho hàm tạo cho API mà bạn muốn gọi. Ví dụ: để gọi API Drive. $client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
05$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
06con trăn
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
61 của thư viện pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
60 với tên và phiên bản của API cũng như thông tin đăng nhập của người dùng. Ví dụ: để gọi phiên bản 2 của API Drive. $client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
07$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
08hồng ngọc
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
62 để gọi Google API bằng cách hoàn thành các bước sau
- Xây dựng một đối tượng dịch vụ cho API mà bạn muốn gọi. Ví dụ: để gọi phiên bản 2 của API Drive.
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth
09 - Đặt thông tin đăng nhập trên dịch vụ.
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth
10 - Yêu cầu dịch vụ API bằng giao diện do đối tượng dịch vụ cung cấp. Ví dụ: để liệt kê các tệp trong Google Drive của người dùng được xác thực.
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth
11
Ngoài ra, ủy quyền có thể được cung cấp trên cơ sở mỗi phương thức bằng cách cung cấp tham số
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib263 cho một phương thức
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth12
Nút. js
Sau khi nhận được mã thông báo truy cập và đặt nó vào đối tượng
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib264, hãy sử dụng đối tượng để gọi các API của Google. Ứng dụng của bạn có thể sử dụng mã thông báo đó để ủy quyền các yêu cầu API thay mặt cho một tài khoản người dùng hoặc tài khoản dịch vụ nhất định. Xây dựng một đối tượng dịch vụ cho API mà bạn muốn gọi
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth13
HTTP/NGƯỜI
Sau khi ứng dụng của bạn nhận được mã thông báo truy cập, bạn có thể sử dụng mã thông báo đó để thực hiện lệnh gọi tới Google API thay mặt cho một tài khoản người dùng nhất định nếu [các] phạm vi quyền truy cập mà API yêu cầu đã được cấp. Để thực hiện việc này, hãy bao gồm mã thông báo truy cập trong một yêu cầu tới API bằng cách bao gồm tham số truy vấn
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib248 hoặc giá trị
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib256 của tiêu đề HTTP
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib266. Khi có thể, nên sử dụng tiêu đề HTTP vì các chuỗi truy vấn có xu hướng hiển thị 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 thư viện máy khách để thiết lập các lệnh gọi tới API Google [ví dụ: khi gọi API tệp Drive]
Bạn có thể dùng thử tất cả các API của Google và xem phạm vi của chúng tại OAuth 2. 0 sân chơi
Các ví dụ HTTP NHẬN
Một cuộc gọi đến điểm cuối
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib268 [API tệp Drive] bằng cách sử dụng tiêu đề HTTP
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib269 có thể giống như sau. Lưu ý rằng bạn cần chỉ định mã thông báo truy cập của riêng mình
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth14
Đây là một cuộc gọi đến cùng một API cho người dùng được xác thực bằng cách sử dụng tham số chuỗi truy vấn
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib248
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth15
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
71 ví dụ
Bạn có thể kiểm tra các lệnh này bằng ứng dụng dòng lệnh
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib271. Đây là một ví dụ sử dụng tùy chọn tiêu đề HTTP [ưu tiên]
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth16
Hoặc, cách khác, tùy chọn tham số chuỗi truy vấn
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth17
Hoàn thành ví dụ
Ví dụ sau in danh sách tệp có định dạng JSON trong Google Drive của người dùng sau khi người dùng xác thực và đồng ý cho ứng dụng truy cập siêu dữ liệu Drive của người dùng
Để chạy ví dụ này Ví dụ này sử dụng khung Flask. Nó chạy một ứng dụng web tại PHP
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
8$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
18composer require google/apiclient:^2.10
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
74 và pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
75 với nội dung bên dưới$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
20mục lục. php
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
21gọi lại oauth2. php
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
22con trăn
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
$client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY];
$client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'];
// offline access will give you both an access and refresh token so that
// your app can refresh the access token without user interaction.
$client->setAccessType['offline'];
// Using "consent" ensures that your application always receives a refresh token.
// If you are not using offline access, you can omit this.
$client->setApprovalPrompt['consent'];
$client->setIncludeGrantedScopes[true]; // incremental auth
8 cho phép bạn kiểm tra OAuth 2. 0 lưu lượng. Nếu bạn truy cập URL đó, bạn sẽ thấy bốn liên kết
- Kiểm tra một yêu cầu API. Liên kết này trỏ đến một trang cố gắng thực hiện một yêu cầu API mẫu. Nếu cần, nó sẽ bắt đầu quy trình ủy quyền. Nếu thành công, trang sẽ hiển thị phản hồi API
- Kiểm tra luồng xác thực trực tiếp. Liên kết này trỏ đến một trang cố gửi người dùng thông qua quy trình ủy quyền. Ứng dụng yêu cầu quyền gửi các yêu cầu API được ủy quyền thay mặt người dùng
- Thu hồi thông tin đăng nhập hiện tại. Liên kết này trỏ đến trang thu hồi quyền mà người dùng đã cấp cho ứng dụng
- Xóa thông tin đăng nhập phiên Flask. Liên kết này xóa thông tin đăng nhập ủy quyền được lưu trữ trong phiên Flask. Điều này cho bạn biết điều gì sẽ xảy ra nếu người dùng đã cấp quyền cho ứng dụng của bạn cố thực hiện một yêu cầu API trong một phiên mới. Nó cũng cho phép bạn xem phản hồi API mà ứng dụng của bạn sẽ nhận được nếu người dùng đã thu hồi các quyền đã cấp cho ứng dụng của bạn và ứng dụng của bạn vẫn cố ủy quyền cho một yêu cầu có mã thông báo truy cập đã bị thu hồi
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth8 làm URI chuyển hướng hợp lệ cho thông tin đăng nhập của bạn và tải xuống client_secret. json cho các thông tin xác thực đó vào thư mục làm việc của bạn.
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth23
hồng ngọc
Ví dụ này sử dụng khuôn khổ Sinatra
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth24
Nút. js
Để chạy ví dụ này
- Trong Bảng điều khiển API, hãy thêm URL của máy cục bộ vào danh sách URL chuyển hướng. Ví dụ: thêm
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
78 - Đảm bảo bạn có LTS bảo trì, LTS đang hoạt động hoặc bản phát hành Node hiện tại. js đã cài đặt
- Tạo một thư mục mới và thay đổi nó. Ví dụ.
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth
25 - Cài đặt Google API Client Library cho Node. js sử dụng npm.
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth
3 - Tạo các tệp
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
79 với nội dung bên dưới - Chạy ví dụ.
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth
27
chính. js
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth28
HTTP/NGƯỜI
Ví dụ Python này sử dụng khung Flask và thư viện Yêu cầu để chứng minh OAuth 2. 0 lưu lượng web. Chúng tôi khuyên bạn nên sử dụng Thư viện ứng dụng Google API dành cho Python cho quy trình này. [Ví dụ trong tab Python có sử dụng thư viện máy khách. ]
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth29
Chuyển hướng quy tắc xác thực URI
Google áp dụng các quy tắc xác thực sau để chuyển hướng URI nhằm giúp nhà phát triển giữ an toàn cho ứng dụng của họ. URI chuyển hướng của bạn phải tuân thủ các quy tắc này. Xem RFC 3986 phần 3 để biết định nghĩa về miền, máy chủ, đường dẫn, truy vấn, lược đồ và thông tin người dùng, được đề cập bên dưới
Quy tắc xác thựcSchemeCác URI chuyển hướng phải sử dụng lược đồ HTTPS, không phải HTTP đơn giản. URI máy chủ cục bộ [bao gồm URI địa chỉ IP máy chủ cục bộ] được miễn trừ khỏi quy tắc này
Chủ nhàMáy chủ không thể là địa chỉ IP thô. Địa chỉ IP của Localhost được miễn trừ khỏi quy tắc này
Miềnpip install --upgrade google-auth google-auth-oauthlib google-auth-httplib280
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib281] trừ khi ứng dụng sở hữu miền. Hơn nữa, nếu một ứng dụng sở hữu miền rút gọn chọn chuyển hướng đến miền đó, thì URI chuyển hướng đó phải chứa
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib282 trong đường dẫn hoặc kết thúc bằng
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib283
Các URI chuyển hướng không được chứa thành phần con userinfo
Đường dẫnCác URI chuyển hướng không được chứa đường dẫn truyền tải [còn được gọi là quay lui thư mục], được biểu thị bằng
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib284 hoặc
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib285 hoặc mã hóa URL của chúngTruy vấn
URI chuyển hướng không thể chứa chuyển hướng mở
MiếngURI chuyển hướng không được chứa thành phần phân đoạn
CharactersRedirect URI không thể chứa các ký tự nhất định bao gồm- Ký tự đại diện [
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
86] - Ký tự ASCII không in được
- Mã hóa phần trăm không hợp lệ [bất kỳ mã hóa phần trăm nào không tuân theo dạng mã hóa URL có ký hiệu phần trăm theo sau là hai chữ số thập lục phân]
- Ký tự null [ký tự NULL được mã hóa, e. g. ,
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
87,pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
88]
ủy quyền gia tăng
Trong OAuth 2. 0, ứng dụng của bạn sẽ yêu cầu quyền truy cập tài nguyên, được xác định theo phạm vi. Phương pháp trải nghiệm người dùng tốt nhất được coi là yêu cầu cấp quyền cho các tài nguyên vào thời điểm bạn cần chúng. Để kích hoạt phương pháp đó, máy chủ ủy quyền của Google hỗ trợ ủy quyền gia tăng. Tính năng này cho phép bạn yêu cầu phạm vi khi cần và nếu người dùng cấp quyền cho phạm vi mới, sẽ trả lại mã ủy quyền có thể được đổi lấy mã thông báo chứa tất cả phạm vi mà người dùng đã cấp cho dự án
Ví dụ: một ứng dụng cho phép mọi người lấy mẫu các bản nhạc và tạo các bản phối có thể cần rất ít tài nguyên khi đăng nhập, có lẽ không cần gì khác ngoài tên của người đăng nhập. Tuy nhiên, việc lưu danh sách kết hợp hoàn chỉnh sẽ yêu cầu quyền truy cập vào Google Drive của họ. Hầu hết mọi người sẽ cảm thấy tự nhiên nếu họ chỉ được yêu cầu cấp quyền truy cập vào Google Drive vào thời điểm ứng dụng thực sự cần nó
Trong trường hợp này, tại thời điểm đăng nhập, ứng dụng có thể yêu cầu phạm vi
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib289 và
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib290 thực hiện đăng nhập cơ bản, sau đó yêu cầu phạm vi
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib291 tại thời điểm yêu cầu đầu tiên để lưu danh sách kết hợp
Để triển khai ủy quyền gia tăng, bạn hoàn thành quy trình thông thường để yêu cầu mã thông báo truy cập nhưng đảm bảo rằng yêu cầu ủy quyền bao gồm các phạm vi được cấp trước đó. Cách tiếp cận này cho phép ứng dụng của bạn tránh phải quản lý nhiều mã thông báo truy cập
Các quy tắc sau áp dụng cho mã thông báo truy cập có được từ ủy quyền gia tăng
- Mã thông báo có thể được sử dụng để truy cập các tài nguyên tương ứng với bất kỳ phạm vi nào được đưa vào ủy quyền kết hợp mới
- Khi bạn sử dụng mã thông báo làm mới cho ủy quyền kết hợp để nhận mã thông báo truy cập, mã thông báo truy cập đại diện cho ủy quyền kết hợp và có thể được sử dụng cho bất kỳ giá trị
pip install --upgrade google-api-python-client
07 nào có trong phản hồi - Ủy quyền kết hợp bao gồm tất cả các phạm vi mà người dùng đã cấp cho dự án API ngay cả khi các khoản cấp được yêu cầu từ các khách hàng khác nhau. Ví dụ: nếu người dùng đã cấp quyền truy cập vào một phạm vi bằng ứng dụng khách trên máy tính để bàn của ứng dụng và sau đó cấp một phạm vi khác cho cùng một ứng dụng thông qua ứng dụng khách trên thiết bị di động, thì ủy quyền kết hợp sẽ bao gồm cả hai phạm vi
- Nếu bạn thu hồi mã thông báo đại diện cho ủy quyền kết hợp, quyền truy cập vào tất cả các phạm vi của ủy quyền đó thay mặt cho người dùng được liên kết sẽ bị thu hồi đồng thời
Các mẫu mã dành riêng cho ngôn ngữ trong Bước 1. Đặt tham số ủy quyền và URL chuyển hướng HTTP/REST mẫu ở Bước 2. Chuyển hướng đến OAuth 2 của Google. 0 máy chủ đều sử dụng ủy quyền gia tăng. Các mẫu mã bên dưới cũng hiển thị mã mà bạn cần thêm để sử dụng ủy quyền gia tăng
Trong Python, đặt đối số từ khóa PHP
pip install --upgrade google-api-python-client
4con trăn
$client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
6 thành pip install --upgrade google-api-python-client
23 để đảm bảo rằng yêu cầu cấp phép bao gồm các phạm vi được cấp trước đó. Rất có khả năng $client = new Google\Client[];
$client->setAuthConfig['client_secret.json'];
6 sẽ không phải là đối số từ khóa duy nhất mà bạn đặt, như trong ví dụ bên dưới
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth31
hồng ngọc
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth32
Nút. js
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth33
HTTP/NGƯỜI
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth34
Làm mới mã thông báo truy cập [truy cập ngoại tuyến]
Mã thông báo truy cập hết hạn định kỳ và trở thành thông tin xác thực không hợp lệ đối với yêu cầu API có liên quan. Bạn có thể làm mới mã thông báo 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 phạm vi được liên kết với mã thông báo
- Nếu bạn sử dụng Thư viện ứng dụng Google API, thì đối tượng ứng dụng khách sẽ làm mới mã thông báo truy cập nếu cần, miễn là bạn định cấu hình đối tượng đó để truy cập ngoại tuyến
- Nếu bạn không sử dụng thư viện máy khách, bạn cần đặt tham số truy vấn HTTP
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];
5 thànhpip install --upgrade google-api-python-client
11 khi chuyển hướng người dùng đến OAuth 2 của Google. 0 máy chủ. Trong trường hợp đó, máy chủ ủy quyền của Google sẽ trả lại mã thông báo làm mới khi bạn đổi mã ủy quyền lấy mã thông báo truy cập. Sau đó, nếu mã thông báo truy cập hết hạn [hoặc bất kỳ lúc nào khác], bạn có thể sử dụng mã thông báo làm mới để nhận mã thông báo truy cập mới
Yêu cầu truy cập ngoại tuyến là yêu cầu đối với bất kỳ ứng dụng nào cần truy cập Google API khi người dùng không có mặt. Ví dụ: một ứng dụng thực hiện các dịch vụ sao lưu hoặc thực thi các hành động vào thời điểm định trước cần có khả năng làm mới mã thông báo truy cập khi người dùng không có mặt. Kiểu truy cập mặc định được gọi là
pip install --upgrade google-api-python-client10
Tất cả các ứng dụng web phía máy chủ, ứng dụng đã cài đặt và thiết bị đều nhận được mã thông báo làm mới trong quá trình ủy quyền. Mã thông báo làm mới thường không được sử dụng trong các ứng dụng web phía máy khách [JavaScript]
Nếu ứng dụng của bạn cần truy cập ngoại tuyến vào Google API, hãy đặt loại truy cập của ứng dụng khách API thành PHP
pip install --upgrade google-api-python-client
11
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth35
Sau khi người dùng cấp quyền truy cập ngoại tuyến cho các phạm vi được yêu cầu, bạn có thể tiếp tục sử dụng ứng dụng khách API để thay mặt người dùng truy cập Google API khi người dùng ngoại tuyến. Đối tượng khách hàng sẽ làm mới mã thông báo truy cập khi cần
con trăn
Trong Python, đặt đối số từ khóa
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5 thành
pip install --upgrade google-api-python-client11 để đảm bảo rằng bạn sẽ có thể làm mới mã thông báo truy cập mà không cần phải nhắc lại người dùng về quyền. Rất có thể
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5 sẽ không phải là đối số từ khóa duy nhất mà bạn đặt, như trong ví dụ bên dưới
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth36
Sau khi người dùng cấp quyền truy cập ngoại tuyến cho các phạm vi được yêu cầu, bạn có thể tiếp tục sử dụng ứng dụng khách API để thay mặt người dùng truy cập Google API khi người dùng ngoại tuyến. Đối tượng khách hàng sẽ làm mới mã thông báo truy cập khi cần
hồng ngọc
Nếu ứng dụng của bạn cần truy cập ngoại tuyến vào Google API, hãy đặt loại truy cập của ứng dụng khách API thành
pip install --upgrade google-api-python-client11
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth37
Sau khi người dùng cấp quyền truy cập ngoại tuyến cho các phạm vi được yêu cầu, bạn có thể tiếp tục sử dụng ứng dụng khách API để thay mặt người dùng truy cập Google API khi người dùng ngoại tuyến. Đối tượng khách hàng sẽ làm mới mã thông báo truy cập khi cần
Nút. js
Nếu ứng dụng của bạn cần truy cập ngoại tuyến vào Google API, hãy đặt loại truy cập của ứng dụng khách API thành
pip install --upgrade google-api-python-client11
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth38
Sau khi người dùng cấp quyền truy cập ngoại tuyến cho các phạm vi được yêu cầu, bạn có thể tiếp tục sử dụng ứng dụng khách API để thay mặt người dùng truy cập Google API khi người dùng ngoại tuyến. Đối tượng khách hàng sẽ làm mới mã thông báo truy cập khi cần
Mã thông báo truy cập hết hạn. Thư viện này sẽ tự động sử dụng mã thông báo làm mới để lấy mã thông báo truy cập mới nếu mã đó sắp hết hạn. Một cách dễ dàng để đảm bảo bạn luôn lưu trữ các mã thông báo gần đây nhất là sử dụng sự kiện mã thông báo
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth39
Sự kiện mã thông báo này chỉ xảy ra trong lần ủy quyền đầu tiên và bạn cần đặt
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];5 thành
pip install --upgrade google-api-python-client11 khi gọi phương thức
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib219 để nhận mã thông báo làm mới. Nếu bạn đã cấp cho ứng dụng của mình các quyền cần thiết mà không đặt các ràng buộc thích hợp để nhận mã thông báo làm mới, bạn sẽ cần ủy quyền lại cho ứng dụng để nhận mã thông báo làm mới
Để đặt
pip install --upgrade google-api-python-client85 sau đó, bạn có thể sử dụng phương pháp
pip install --upgrade flask09
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth0
Sau khi khách hàng có mã thông báo làm mới, mã thông báo truy cập sẽ được lấy và tự động làm mới trong lệnh gọi API tiếp theo
HTTP/NGƯỜI
Để làm mới mã thông báo truy cập, ứng dụng của bạn gửi yêu cầu HTTPS
pip install --upgrade flask10 tới máy chủ ủy quyền của Google [
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib238] bao gồm các tham số sauCác trường
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json'];7ID khách hàng thu được từ Bảng điều khiển API.
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib240Bí mật ứng dụng khách thu được từ Bảng điều khiển API.
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib242Như được định nghĩa trong OAuth 2. 0, giá trị của trường này phải được đặt thành
pip install --upgrade google-api-python-client85.
pip install --upgrade google-api-python-client85Mã thông báo làm mới được trả lại từ trao đổi mã ủy quyền
Đoạn mã sau hiển thị một yêu cầu mẫu
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth1
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 hiển thị một phản hồi mẫu
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth2
Lưu ý rằng có giới hạn về số lượng mã thông báo làm mới sẽ được phát hành; . Bạn nên lưu mã thông báo làm mới trong bộ lưu trữ dài hạn và tiếp tục sử dụng chúng miễn là chúng vẫn còn hiệu lực. Nếu ứng dụng của bạn yêu cầu quá nhiều mã thông báo làm mới, ứng dụng có thể chạy vào các giới hạn này, trong trường hợp đó, mã thông báo 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 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 Cài đặt tài khoản. Xem phần Xóa quyền truy cập trang web hoặc ứng dụng của Trang web và ứng dụng bên thứ ba có quyền truy cập vào tài khoản hỗ trợ 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 cấp cho nó theo chương trình. Thu hồi theo chương trình rất quan trọng trong trường hợp người dùng hủy đăng ký, xóa ứng dụng hoặ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 xóa 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ị xóa
Để thu hồi mã thông báo theo chương trình, hãy gọi PHP
pip install --upgrade flask
17
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth3
con trăn
Để thu hồi mã thông báo theo chương trình, hãy gửi yêu cầu tới
pip install --upgrade flask18 bao gồm mã thông báo làm tham số và đặt tiêu đề
pip install --upgrade flask19
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth4
hồng ngọc
Để thu hồi mã thông báo theo chương trình, hãy tạo một yêu cầu HTTP tới điểm cuối
pip install --upgrade flask20
$client = new Google\Client[]; $client->setAuthConfig['client_secret.json']; $client->addScope[Google\Service\Drive::DRIVE_METADATA_READONLY]; $client->setRedirectUri['//' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php']; // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType['offline']; // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt['consent']; $client->setIncludeGrantedScopes[true]; // incremental auth5
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ã thông báo truy cập và nó có mã thông báo làm mới tương ứng, thì mã thông báo làm mới cũng sẽ bị thu hồi
Nếu việc thu hồi được xử lý thành công, thì mã trạng thái HTTP của phản hồi là
pip install --upgrade flask21. Đối với các điều kiện lỗi, mã trạng thái HTTP
pip install --upgrade flask22 được trả về cùng với mã lỗi