2015-05-19 15 views
6

Tôi đang cố gắng lấy nội dung của bảng tính Google Drive, nhưng dường như tôi không thể tìm thấy một viên ngọc có thể làm điều đó dễ dàng. Tôi đã thử google-drive-ruby, nhưng nó liên quan đến một bước mà trong đó tôi phải nhận được một mã thông báo auth từ trang web của Google. Điều này không phải là rất hữu ích, vì tôi phải làm tất cả phía máy chủ này. Rõ ràng có một phương pháp đăng nhập trong các phiên bản trước của đá quý, nhưng đã bị loại bỏ.Truy cập bảng tính Google Drive trong Ruby on Rails

Có cách nào để thực hiện việc này không? Tôi có phải sử dụng OAuth để nhận mã thông báo và chuyển mã thông báo đó lên google-drive-ruby không?

Trả lời

12

Tôi đã quản lý để nhận câu trả lời trên Reddit. Bạn cần có Tài khoản dịch vụ và chia sẻ tài liệu với email của ứng dụng dịch vụ của bạn. Khóa p12 cũng phải được lưu ở đâu đó.

# gem install google-api-client -v 0.8.6 # upper versions are not compatible with this code 

require "google/api_client" 

@email = "[email protected]" 
@key = "path/to/key.p12" 

key = Google::APIClient::KeyUtils.load_from_pkcs12(@key, 'notasecret') 

auth = Signet::OAuth2::Client.new(
    token_credential_uri: 'https://accounts.google.com/o/oauth2/token', 
    audience: 'https://accounts.google.com/o/oauth2/token', 
    scope: ["https://www.googleapis.com/auth/drive", "https://spreadsheets.google.com/feeds/"].join(' '), 
    issuer: @email, 
    access_type: 'offline', 
    signing_key: key 
) 

auth.fetch_access_token! 
puts auth.access_token 
Các vấn đề liên quan