daredevil1729

drive-download

Aug 5th, 2020
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { Component } from 'react'
  2. import GooglePicker from 'react-google-picker';
  3.  
  4. export class App extends Component {
  5.   state = {
  6.     googleAuthToken: ''
  7.   }
  8.   componentDidMount() {
  9.     var script = document.createElement('script');
  10.     script.onload = this.handleClientLoad
  11.     script.src = "https://apis.google.com/js/api.js";
  12.     document.body.appendChild(script);
  13.   }
  14.  
  15.   handleClientLoad = () => {
  16.     console.log('GAPI script loaded...');
  17.     window.gapi.load('client:auth2');
  18.   }
  19.  
  20.   render() {
  21.     return (
  22.       <div>
  23.         <a id="download-file">Download File</a>
  24.         <GooglePicker clientId={'<MY_CLIENT_ID>'}
  25.           developerKey={'<MY_DEVELOPER_KEY>'}
  26.           scope={['https://www.googleapis.com/auth/drive.readonly']}
  27.           onChange={data => console.log('on change:', data)}
  28.           onAuthenticate={token => {
  29.             console.log('oauth token:', token)
  30.             this.setState({
  31.               googleAuthToken: token
  32.             })
  33.           }}
  34.           onChange={
  35.             data => {
  36.               if (data["action"] === "picked") {
  37.                 console.log('PICKED:', data["docs"])
  38.                 const fileId = data.docs[0].id
  39.                 console.log(fileId);
  40.                 var request = window.gapi.client.request({
  41.                   'path': `https://www.googleapis.com/drive/v3/files/${fileId}?alt=media`,
  42.                   'method': 'GET'
  43.                 });
  44.                 request.execute((json, raw) => {
  45.  
  46.                   console.log('JSON: ', json, '\nRAW: ', raw);
  47.                   var val = JSON.parse(raw).gapiRequest.data.body;
  48.  
  49.                   var myBlob = new Blob([val], { type: 'application/pdf' });
  50.                   var url = window.URL.createObjectURL(myBlob);
  51.                   document.getElementById('download-file').href = url;
  52.  
  53.  
  54.                 });
  55.  
  56.               }
  57.             }}
  58.           onAuthFailed={data => console.log('on auth failed:', data)}
  59.           multiselect={true}
  60.           navHidden={true}
  61.           authImmediate={false}
  62.           mimeTypes={['application/pdf']}>
  63.           <button>Select File</button>
  64.         </GooglePicker>
  65.       </div>
  66.     )
  67.   }
  68. }
  69.  
  70. export default App
  71.  
Add Comment
Please, Sign In to add comment