Model OAuth 2.0 Service Account ini sangat pas apabila digunakan untuk Program yang berjalan terus-menerus (service) atau aplikasi yang berjalan di background, yang mebutuhkan akses ke semua User dalam satu domain Google Apps.
Membuat OAuth 2.0 Client ID
- Kita buat OAuth project dari console API. Apabila belum pernah membuat project sebelumnya, akan disodorkan menu untuk membuat Project. Klik menu Create OAuth Project. Apabila sudah pernah membuat Project sebelumnya, pilih pada drop-down list Porject, pilih Create...
- Klik menu API Access, kemudian klik Create an OAuth 2.0 client ID. Isi informasi umum seputar Project ini (terserah), yang harus diperhatikan adalah pada Application Type, pilih Service account.
- Setelah itu akan muncul dialog untuk Download Private Key. Nanti kita akan gunakan Private Key ini.
- Hasilnya sebagai berikut. Catat Client ID dan Email Address juga.
Mulai Beraksi!
Dalam contoh ini saya menggunakan bahasa Python yang memang favorit saya, meskipun bukan expertise saya (setidaknya ketika saya menulis ini). Selain itu juga saya ambil contoh kasus dalam mengakses Google Drive API dari user-user lain termasuk dalam domain Google App kita.
- Proses Authorization
#function untuk ambil content file Private Key def datafile(filename): f = open(os.path.join(os.path.dirname(__file__), 'data', filename), 'rb') data = f.read() f.close() return data class OAuth2Service(): #generate credential def _generate_credential(self): private_key = datafile(CLIENT_PRIV_KEY) self.cred = SignedJwtAssertionCredentials( 'xxxxxxxxxxxx@developer.gserviceaccount.com', #email address dari API Console private_key, scope=OAUTH_SCOPE, prn='otheruser@yourdomain.com') #main function if __name__ == '__main__': app = Server2DriveSync() app._generate_credential() #do the action (next section)
- Mulai mengakses Google Drive API
class OAuth2Service(): #... def test_create_file(self): # Create an httplib2.Http object and authorize it with our credentials http = httplib2.Http() http = self.cred.authorize(http) drive_service = build('drive', 'v2', http=http) # Insert a file media_body = MediaFileUpload('test_file.txt', mimetype='text/plain', resumable=True) body = { 'title': 'test_file.txt', 'description': 'A test document', 'mimeType': 'text/plain' } file = drive_service.files().insert(body=body, media_body=media_body).execute() pprint.pprint(file)
Download full source code: http://goo.gl/6I20I
Beri Permission untuk Project Ini
- Untuk menberi akses, silahkan Login ke Control Panel Google Apps, kemudian akses menu Advanced Tools > Manage OAuth domain key
- Akses menu Manage client API access, kemudian masukkan Client ID yang sudah kita buat pada API Console diatas. Pada One or More API scope(s) isi dengan Google Drive Scope: https://www.googleapis.com/auth/drive
- Klik Authorize
Dengan model OAuth ini, setidaknya kita bisa membuat Program seperti berikut:
- Sinkronisasi Google Drive dengan File Server local
- Tool migrasi file-file dari File Server yang terpusat ke Google Drive
No comments:
Post a Comment