Mã hóa url php trực tuyến

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ách

thư 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
Quan trọng. Thư viện ứng dụng Google API dành cho JavaScript và Đăng nhập bằng Google chỉ nhằm mục đích xử lý OAuth 2. 0 trong trình duyệt của người dùng. Nếu bạn muốn sử dụng JavaScript ở phía máy chủ để quản lý OAuth 2. 0 tương tác với Google, hãy cân nhắc sử dụng Node. js trên nền tảng back-end của bạn

đ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

  1. Mở Thư viện API trong Bảng điều khiển API của Google
  2. Nếu được nhắc, hãy chọn một dự án hoặc tạo một dự án mới
  3. 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 đó
  4. Chọn API bạn muốn bật, sau đó nhấp vào nút Bật
  5. Nếu được nhắc, hãy bật thanh toán
  6. 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 đó

  1. Chuyển đến trang Thông tin xác thực
  2. Nhấp vào Tạo thông tin xác thực > ID ứng dụng khách OAuth
  3. Chọn loại ứng dụng ứng dụng Web
  4. Đ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('http://' . $_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('http://' . $_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ướng

    Chú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ạn

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

Phạm vi cho phép ứng dụng của bạn chỉ yêu cầu quyền truy cập vào 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úp

Yê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

PHP

Để chạy các mẫu mã PHP trong tài liệu này, bạn sẽ cần

  • PHP5. 6 trở lên với giao diện dòng lệnh (CLI) và tiện ích mở rộng JSON được cài đặt
  • Công cụ quản lý phụ thuộc Composer
  • Thư viện ứng dụng Google API dành cho PHP

    composer require google/apiclient:^2.10

con trăn

Để chạy các mẫu mã Python trong tài liệu này, bạn sẽ cần

  • Trăn 2. 6 hoặc cao hơn
  • Công cụ quản lý gói pip
  • Thư viện ứng dụng Google API dành cho Python.
    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
  • Khung ứng dụng web Flask Python. ________số 8
  • Thư viện HTTP
    $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('http://' . $_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
    0

hồng ngọc

Để chạy các mẫu mã Ruby trong tài liệu này, bạn sẽ cần

  • hồng ngọc 2. 2. 2 hoặc cao hơn
  • Thư viện ứng dụng Google API dành cho Ruby

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
  • Khung ứng dụng web Sinatra Ruby

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    2

Nút. js

Để chạy nút. js mẫu trong tài liệu này, bạn sẽ cần

  • LTS bảo trì, LTS đang hoạt động hoặc bản phát hành hiện tại của Node. js
  • Nút API của Google. ứng dụng khách js

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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

HTTP/NGƯỜI

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ố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

  1. Ứng dụng của bạn xác định các quyền cần thiết
  2. Ứ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
  3. Người dùng quyết định có cấp quyền cho ứng dụng của bạn hay không
  4. Ứng dụng của bạn tìm ra những gì người dùng đã quyết định
  5. 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ố đó

PHP

Đoạn mã dưới đây tạo một đối tượng

$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('http://' . $_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-client
01

Lưu ý rằng lược đồ, trường hợp và dấu gạch chéo sau

pip install --upgrade google-api-python-client
02 hoặc
pip install --upgrade google-api-python-client
03 ('
pip install --upgrade google-api-python-client
04') 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-client
05. 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-client
0
pip install --upgrade google-api-python-client
07Bắ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-client
08

pip install --upgrade google-api-python-client
1

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-client
10, là giá trị mặc định và
pip install --upgrade google-api-python-client
11

Đặt giá trị thành

pip install --upgrade google-api-python-client
11 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-client
13

pip install --upgrade google-api-python-client
2____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-client
15 trong thành phần truy vấn URL (
pip install --upgrade google-api-python-client
16) 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-client
14 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-client
14

Để đặt giá trị này trong PHP, hãy gọi hàm

pip install --upgrade google-api-python-client
21

pip install --upgrade google-api-python-client
3____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-client
23 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-client
24

pip install --upgrade google-api-python-client
4____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-client
26, 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-client
27

pip install --upgrade google-api-python-client
5
pip install --upgrade google-api-python-client
28Tù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-client
29

pip install --upgrade google-api-python-client
6

giá trị có thể là

pip install --upgrade google-api-python-client
30Khô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-client
31Nhắc người dùng đồng ý.
pip install --upgrade google-api-python-client
32Nhắ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-client
33 để 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-client
34, 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-client
7

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-client
38 để 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-client
39, 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-client
8
$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-client
01

Lưu ý rằng lược đồ, trường hợp và dấu gạch chéo sau

pip install --upgrade google-api-python-client
02 hoặc
pip install --upgrade google-api-python-client
03 ('
pip install --upgrade google-api-python-client
04') 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-client
46

pip install --upgrade google-api-python-client
9
pip install --upgrade google-api-python-client
07Bắ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-httplib2
0

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-client
10, là giá trị mặc định và
pip install --upgrade google-api-python-client
11

Đặt giá trị thành

pip install --upgrade google-api-python-client
11 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-client
56

pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
1____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-client
15 trong thành phần truy vấn URL (
pip install --upgrade google-api-python-client
16) 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-client
14 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-client
14

Trong Python, đặt tham số

pip install --upgrade google-api-python-client
14 bằng cách chỉ định
pip install --upgrade google-api-python-client
14 làm đối số từ khóa khi gọi phương thức
pip install --upgrade google-api-python-client
56

pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
2
$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-client
23 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-client
56

pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
3____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-client
26, tương đương với ID Google của người dùng

Trong Python, đặt tham số

pip install --upgrade google-api-python-client
25 bằng cách chỉ định
pip install --upgrade google-api-python-client
25 làm đối số từ khóa khi gọi phương thức
pip install --upgrade google-api-python-client
56

pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
4
pip install --upgrade google-api-python-client
28Tù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-client
28 bằng cách chỉ định
pip install --upgrade google-api-python-client
28 làm đối số từ khóa khi gọi phương thức
pip install --upgrade google-api-python-client
56

pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
5

giá trị có thể là

pip install --upgrade google-api-python-client
30Khô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-client
31Nhắc người dùng đồng ý.
pip install --upgrade google-api-python-client
32Nhắ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-httplib2
6

Ứ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-client
84, 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-httplib2
7

Lưu ý quan trọng -

pip install --upgrade google-api-python-client
85 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-client
86. 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-client
01

Lưu ý rằng lược đồ, trường hợp và dấu gạch chéo sau

pip install --upgrade google-api-python-client
02 hoặc
pip install --upgrade google-api-python-client
03 ('
pip install --upgrade google-api-python-client
04') phải khớp với nhau

pip install --upgrade google-api-python-client
94Bắ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-client
95 cho các ứng dụng máy chủ web

pip install --upgrade google-api-python-client
07Bắ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-client
10, là giá trị mặc định và
pip install --upgrade google-api-python-client
11

Đặt giá trị thành

pip install --upgrade google-api-python-client
11 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-client
14Đượ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-client
15 trong thành phần truy vấn URL (
pip install --upgrade google-api-python-client
16) 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-client
14 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-client
14

$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-client
23 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-client
25Tù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-client
26, tương đương với ID Google của người dùng

pip install --upgrade google-api-python-client
28Tù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-client
30Khô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-client
31Nhắc người dùng đồng ý.
pip install --upgrade google-api-python-client
32Nhắ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

PHP

  1. Tạo URL để 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
    8
  2. Chuyển hướng người dùng đến
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    16.
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    9

con trăn

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

pip install --upgrade flask
0

hồng ngọc

  1. Tạo URL để yêu cầu quyền truy cập từ OAuth 2 của Google. 0 máy chủ.
    pip install --upgrade flask
    1
  2. Chuyển hướng người dùng đến
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    17

Nút. js

  1. Sử dụng URL được tạo
    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ủ
  2. Chuyển hướng người dùng đến
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    18.
    pip install --upgrade flask
    2

HTTP/NGƯỜI

Chuyển hướng mẫu đến máy chủ ủy quyền của Google

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

pip install --upgrade flask
3

Sau khi bạn tạo URL yêu cầu, hãy chuyển hướng người dùng đến đó

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-httplib2
21

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-httplib2
22

Đ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

Android

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-httplib2
23. 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ợ

iOS

Nhà phát triển iOS và macOS có thể gặp phải lỗi này khi mở yêu cầu cấp quyền trong

pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
24. 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-httplib2
25 cũng là một tùy chọn được hỗ trợ

pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
26

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-client
01

$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 flask
4

Phản hồi mã ủy quyền

pip install --upgrade flask
5Quan 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-httplib2
29 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 flask
6

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-httplib2
30, điều này có thể sẽ gây ra lỗi
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
31 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

PHP

Để 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-httplib2
32

pip install --upgrade flask
7

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-httplib2
33

pip install --upgrade flask
8

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-httplib2
35 để trao đổi mã ủy quyền trong phản hồi đó lấy mã thông báo truy cập

pip install --upgrade flask
9

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-httplib2
36

$client = new Google\Client();
$client->setAuthConfig('client_secret.json');
$client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
$client->setRedirectUri('http://' . $_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
00

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-httplib2
37

$client = new Google\Client();
$client->setAuthConfig('client_secret.json');
$client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
$client->setRedirectUri('http://' . $_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
01

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-httplib2
38 và đặt các tham số sau

Cá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-httplib2
40Bí 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-client
95Mã ủy quyền được trả về từ yêu cầu ban đầu.
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
42Như đượ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-httplib2
43.
$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('http://' . $_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
02

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-client
11 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ường
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
48Mã 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-httplib2
49Thờ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-client
85A 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-client
11 trong yêu cầu ban đầu tới máy chủ ủy quyền của Google.
pip install --upgrade google-api-python-client
07Phạm vi truy cập được cấp bởi
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
48 đượ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-httplib2
55Loạ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-httplib2
56. 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('http://' . $_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
03Ghi 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

PHP

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

  1. Nếu bạn cần áp dụng mã thông báo truy cập cho đối tượng
    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('http://' . $_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
    04
  2. Xây dựng một đối tượng dịch vụ cho API mà bạn muốn gọi. Bạn xây dựng một đối tượng dịch vụ bằng cách cung cấp một đối tượng
    pip 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('http://' . $_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
  3. 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('http://' . $_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
    06

con trăn

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

  1. Xây dựng một đối tượng dịch vụ cho API mà bạn muốn gọi. Bạn xây dựng một đối tượng dịch vụ bằng cách gọi phương thức
    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('http://' . $_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
  2. 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('http://' . $_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
    08

hồng ngọc

Sử dụng đối tượng

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

  1. 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('http://' . $_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
  2. Đặ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('http://' . $_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
  3. 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('http://' . $_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-httplib2
63 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('http://' . $_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
12

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-httplib2
64, 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('http://' . $_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
13

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-httplib2
48 hoặc giá trị
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
56 của tiêu đề HTTP
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
66. 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-httplib2
68 (API tệp Drive) bằng cách sử dụng tiêu đề HTTP
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
69 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('http://' . $_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
14

Đâ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-httplib2
48

$client = new Google\Client();
$client->setAuthConfig('client_secret.json');
$client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
$client->setRedirectUri('http://' . $_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
15

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-httplib2
71. Đâ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('http://' . $_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
16

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('http://' . $_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
17

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

PHP

Để chạy ví dụ này

  1. 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
    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
  2. 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('http://' . $_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
    18
  3. Cài đặt Google API Client Library cho PHP bằng Composer.
    composer require google/apiclient:^2.10
  4. Tạo các file
    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
  5. Chạy ví dụ với một máy chủ web được cấu hình để phục vụ PHP. Nếu bạn sử dụng PHP5. 6 trở lên, bạn có thể sử dụng máy chủ web thử nghiệm tích hợp sẵn của PHP.
    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    20

mục lục. php

$client = new Google\Client();
$client->setAuthConfig('client_secret.json');
$client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
$client->setRedirectUri('http://' . $_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
21

gọi lại oauth2. php

$client = new Google\Client();
$client->setAuthConfig('client_secret.json');
$client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
$client->setRedirectUri('http://' . $_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
22

con trăn

Ví dụ này sử dụng khung Flask. Nó chạy một ứng dụng web tại

$client = new Google\Client();
$client->setAuthConfig('client_secret.json');
$client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
$client->setRedirectUri('http://' . $_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
Ghi chú. Để chạy mã này cục bộ, bạn phải làm theo hướng dẫn trong phần điều kiện tiên quyết, bao gồm đặt
$client = new Google\Client();
$client->setAuthConfig('client_secret.json');
$client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
$client->setRedirectUri('http://' . $_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ướ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('http://' . $_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
23

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('http://' . $_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
24

Nút. js

Để chạy ví dụ này

  1. 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
  2. Đả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
  3. 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('http://' . $_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
  4. 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('http://' . $_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
  5. 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
  6. Chạy ví dụ.
    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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('http://' . $_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
28

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('http://' . $_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
29

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ựcScheme

Cá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ền
  • TLD lưu trữ (Miền cấp cao nhất) phải thuộc danh sách hậu tố công khai
  • Tên miền máy chủ không thể là
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    80
  • Các URI chuyển hướng không thể chứa các miền rút ngắn URL (e. g.
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    81) 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-httplib2
    82 trong đường dẫn hoặc kết thúc bằng
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    83
  • Thông tin người dùng

    Các URI chuyển hướng không được chứa thành phần con userinfo

    Đường dẫn

    Cá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-httplib2
    84 hoặc
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    85 hoặc mã hóa URL của chúng

    Truy vấn

    URI chuyển hướng không thể chứa chuyển hướng mở

    Miếng

    URI 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-httplib2
    89 và
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    90 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-httplib2
    91 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
    thận trọng. việc chọn bao gồm các phạm vi đã cấp sẽ tự động thêm các phạm vi đã được người dùng cấp trước đó vào yêu cầu ủy quyền của bạn. Trang cảnh báo hoặc lỗi có thể hiển thị nếu ứng dụng của bạn hiện không được phê duyệt để yêu cầu tất cả các phạm vi có thể được trả lại trong phản hồi. Xem Ứng dụng chưa được xác minh để biết thêm thông tin

    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

    PHP

    pip install --upgrade google-api-python-client
    4

    con trăn

    Trong Python, đặt đối số từ khóa

    $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('http://' . $_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
    31

    hồng ngọc

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    32

    Nút. js

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    33

    HTTP/NGƯỜI

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    34

    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ành
      pip 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-client
    10

    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)

    PHP

    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-client
    11

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    35

    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-client
    11 để đả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('http://' . $_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
    36

    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-client
    11

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    37

    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-client
    11

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    38

    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('http://' . $_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
    39

    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-client
    11 khi gọi phương thức
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    19 để 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-client
    85 sau đó, bạn có thể sử dụng phương pháp
    pip install --upgrade flask
    09

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    0

    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 flask
    10 tới máy chủ ủy quyền của Google (
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
    38) bao gồm các tham số sau

    Cá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-httplib2
    40Bí 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-httplib2
    42Như đượ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-client
    85.
    pip install --upgrade google-api-python-client
    85Mã 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('http://' . $_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

    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('http://' . $_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
    2

    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

    PHP

    Để thu hồi mã thông báo theo chương trình, hãy gọi

    pip install --upgrade flask
    17

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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

    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 flask
    18 bao gồm mã thông báo làm tham số và đặt tiêu đề
    pip install --upgrade flask
    19

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    4

    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 flask
    20

    $client = new Google\Client();
    $client->setAuthConfig('client_secret.json');
    $client->addScope(Google\Service\Drive::DRIVE_METADATA_READONLY);
    $client->setRedirectUri('http://' . $_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
    5

    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 flask
    21. Đối với các điều kiện lỗi, mã trạng thái HTTP
    pip install --upgrade flask
    22 được trả về cùng với mã lỗi