2013-01-06 52 views
6

Tôi muốn sử dụng Google Drive để hoạt động như một CMS bán cho một trang web mà tôi đang thực hiện để chủ sở hữu nội dung có thể chỉnh sửa nội dung của họ bằng Google Drive. Tôi muốn sử dụng tài khoản người dùng cụ thể có quyền truy cập vào Google Drive (bằng cách viết bài đăng này, tài khoản dịch vụ KHÔNG có quyền truy cập trực tiếp vào Google Drive) và có thể chia sẻ tài liệu với chủ sở hữu nội dung.Làm cách nào để cấp quyền truy cập tài khoản dịch vụ Google Drive cho tài khoản Google mà không cần sử dụng các ứng dụng của Google?

Sau khi đọc qua các API và hướng dẫn, tôi đã tìm thấy câu trả lời trong đoàn: https://developers.google.com/drive/delegation

vấn đề chính của tôi với quá trình này là các trang web không được quản lý bởi Google Apps và do đó các bước được nêu trong 'Delegate miền toàn quyền cho tài khoản dịch vụ của bạn 'gây nhầm lẫn cho tôi - có vẻ như có thể xử lý ủy quyền này mà không sử dụng Google Apps, nhưng sau khi tìm kiếm thông qua cài đặt trong Google Drive cho tài khoản người dùng cụ thể của tôi, tôi dường như không thể tìm thấy khả năng ủy quyền mạo danh.

Một đoạn mã Tôi đang sử dụng:

static public function getService() { 
    $key = file_get_contents(GOOGLEAPI_KEYFILE); 
    $auth = new Google_AssertionCredentials(GOOGLEAPI_SERVICE_EMAIL, array(GOOGLEAPI_SCOPE), $key); 
    $auth->setPrn(GOOGLEAPI_IMPERSONATION); 
    self::$apiClient = new Google_Client(); 
    self::$apiClient->setUseObjects(true); 
    self::$apiClient->setAssertionCredentials($auth); 
    return new Google_DriveService(self::$apiClient); 
} 

GOOGLEAPI_IMPERSONATION là tài khoản người dùng cụ thể và khi tôi chạy mã này, các quốc gia ngoại lệ:

Lỗi khi làm mới token OAuth2, message: '{"error": "access_denied"}

Bất cứ ai cũng có bất kỳ trợ giúp nào? Tôi có hiểu lầm một khái niệm cơ bản về cách oAuth hoạt động theo phái đoàn không?

Trả lời

5

tài khoản dịch vụ có nghĩa là cho hai trường hợp khác nhau:

  • ủy quyền ứng dụng/quy trình để xác thực & gọi các dịch vụ sử dụng bản sắc riêng của mình. Hãy suy nghĩ về các dịch vụ như dự đoán, lưu trữ đám mây, v.v. nơi dữ liệu được sở hữu bởi ứng dụng.
  • Mạo danh người dùng trong miền ứng dụng Google, nơi quản trị viên tên miền có thể ủy quyền trước ứng dụng để hành động thay mặt cho người dùng trong miền của họ.

Mạo danh hoạt động cho miền Google Apps vì quản trị viên có thể ủy quyền ứng dụng ngoài băng cho người dùng thông qua bảng điều khiển. Tất nhiên họ chỉ có thể cho phép ứng dụng truy cập dữ liệu cho các tài khoản mà họ quản lý. Đối với người dùng cá nhân không thuộc tổ chức, ứng dụng cần sử dụng luồng OAuth thông thường để yêu cầu ủy quyền từ mỗi người dùng.

Tôi chưa thử nghiệm trong một thời gian, nhưng cuối cùng tôi đã kiểm tra có thể sử dụng Drive với tài khoản dịch vụ hoạt động như chính nó. Giới hạn duy nhất tôi gặp phải là không thể mua hạn ngạch bổ sung và ứng dụng được giới hạn ở dung lượng lưu trữ miễn phí 5 GB ban đầu.

+1

Steve, cảm ơn phản hồi. Tôi đã sử dụng thành công tài khoản dịch vụ để tải lên và đọc tài liệu mà không gặp bất kỳ sự cố nào. Tuy nhiên, không có quyền truy cập vào tài liệu được tải lên thông qua giao diện người dùng web của Google Documents, đây là yêu cầu. Ngoài ra, lý do tại sao oAuth của người dùng không hoạt động là vì tôi chỉ muốn sử dụng tài khoản dịch vụ Google Tài liệu làm nhóm chứa tài liệu được sử dụng để điền nội dung trên trang web - vì vậy nếu người dùng Google truy cập trang web, có không cần cho họ để oAuth tài khoản của họ hoặc bất cứ điều gì. –

+4

Sửa các tài khoản dịch vụ không có quyền truy cập vào giao diện người dùng web. Nếu đó là một yêu cầu bạn có một vài lựa chọn. Đầu tiên là chỉ cần chia sẻ tài liệu với những người dùng cần có khả năng truy cập chúng. Tất cả những gì cần là biết địa chỉ email của họ.Cách khác, bạn có thể đi theo hướng khác và tạo tài liệu trong các tài khoản khác rồi chia sẻ với tài khoản dịch vụ. Cuối cùng, nếu chỉ có một tài khoản duy nhất cần quyền truy cập, hãy ủy quyền sử dụng oauth bình thường với quyền truy cập ngoại tuyến và cho phép ứng dụng hành động thay mặt cho người dùng đó. –

+0

Cảm ơn Steve - Tôi sẽ xem xét kỹ hơn khi tôi quay lại dự án này –

Các vấn đề liên quan