2013-05-13 18 views
6

Tôi có một ứng dụng trong GAE (Python 2.7) và hiện cần truy cập vào Google Drive để hiển thị danh sách các thư mục và tài liệu (được chia sẻ).Cách sử dụng API Google Drive từ Google App Engine?

Tìm kiếm thường dẫn đến con trỏ tới DrEdit, bao gồm App Engine and Google Drive API, hỏi cùng một câu hỏi nhưng chấp nhận câu trả lời tôi không đồng ý, vì DrEdit là một ứng dụng mẫu cho Google Drive chứ không phải GAE.

Các tập tin danh sách từ API Drive là những gì tôi muốn để có thể sử dụng từ GAE: https://developers.google.com/drive/v2/reference/files/list

+0

"DrEdit là một ứng dụng web được viết trên Google App Engine bằng Python". Có gì sai với nó? https://developers.google.com/drive/examples/python –

+0

Câu hỏi này: http://stackoverflow.com/questions/15454708/accessing-google-drive-from-a-google-app-engine-python-app Tôi đã thử DrEdit tại developers.google.com/drive/examples/python (nó đã cho tôi giờ làm việc thông qua nó để nhận ra rằng nó không có gì để làm với yêu cầu của tôi). " DrEdit là một ứng dụng dành cho Google Drive, tức là thêm chức năng vào Google Drive. Tôi chỉ muốn đọc Drive từ GAE. Tôi sẽ xem xét lại DrEdit, một nơi nào đó trong đó có lẽ là thông tin tôi cần ... – cbootle

+1

DrEdit chứa tất cả các thông tin thiết lập cần thiết. Tuy nhiên, giống như nhiều ứng dụng mẫu, nó khá phức tạp. Nếu ai đó đi qua chủ đề này và chỉ có hệ thống kết nối cơ bản của ứng dụng Drive-Api, điều đó sẽ rất hữu ích. – rGil

Trả lời

4

Mặc dù Google App Engine và Google Drive đều sản phẩm của Google, tiếc là họ không trực tiếp liên kết. Bạn có thể truy cập API Google Drive bằng thư viện google-api-python-client mà bạn phải cài đặt.

Quá trình này có thể được tìm thấy tại Python Google Drive API Quickstart Guide, và dưới hình thức tóm tắt như sau:

  1. Về phía của Google: Cho phép truy cập API Drive cho chương trình GAE bạn

    • Activate Drive API. Nhấp vào Đến credentials nút để tiếp tục ...
    • Tạo màn hình có sự đồng ý của bạn: Cài đặt OAuth bạn Chấp thuận Screen như Google sẽ ném lỗi lạ nếu điều này chưa được thiết lập:
      • Bấm trên sự chấp thuận Screen OAuth tab
      • Chọn một địa chỉ email và nhập tên sản phẩm.
    • Nhận thông tin:
      • Bấm vào Credentials tab
      • Chọn Thêm thông tin và sau đó OAuth 2.0 client ID. Chọn loại ứng dụng của bạn và nhập các chi tiết liên quan. Bạn có thể thay đổi chúng sau này!
      • Quay lại tab Thông tin xác thực, tải xuống thông tin đăng nhập JSON (tất cả các cách bên phải trong bảng, nút tải xuống chỉ xuất hiện khi bạn di chuột gần đó). Đổi tên nó client_secret.json và đặt nó vào thư mục mã gốc của bạn. Bạn sẽ cần điều này để yêu cầu thông tin xác thực từ người dùng.
  2. Về phía bạn: Download the google-api-python-client library, giải nén nó trong thư mục mã của bạn và chạy python setup.py install. Thao tác này sẽ cài đặt thư viện chứa nhiều API của sản phẩm Google.

  3. Bây giờ bạn đã sẵn sàng sử dụng API Drive. Bạn có thể kiểm tra quyền truy cập của mình bằng cách sử dụng sample code. Đọc nó bởi vì nó là một hướng dẫn tốt để viết mã của riêng bạn! Nếu bạn đang truy cập dữ liệu người dùng, bạn sẽ cần yêu cầu thông tin đăng nhập của người dùng khi họ đăng nhập và hầu hết có thể lưu trữ chúng.Sau đó, để sử dụng API, cách dễ nhất là để có được các đối tượng service:

    import httplib2 
    from apiclient import discovery 
    
    credentials = get_credentials() #Your function to request/access stored credentials 
    #Authorise access to Drive using the user's credentials 
    http = credentials.authorise(httplib2.Http()) 
    #The service object is the gateway to your API functions 
    service = discovery.build('drive', 'v2', http=http) 
    
    #Run your requests using the service object. e.g. list first 10 files: 
    results = service.files().list(maxResults=10).execute() 
    # ... etc ... Do something with results 
    

Trên đoạn mã được sửa đổi từ sample code.

API tham chiếu cho Google Drive có thể là found here.

Cần có quy trình chung tương tự để liên kết GAE với các API của sản phẩm Google khác, ví dụ: Lịch. Tất cả các chương trình viết tốt nhất của bạn!