ড্রাইভ UI এর সাথে একীভূত করুন "এর সাথে খুলুন" কনটেক্সট মেনু

যখন একজন ব্যবহারকারী একটি ফাইল নির্বাচন করেন এবং ড্রাইভ UI-এর "ওপেন উইথ" মেনু আইটেমটিতে ক্লিক করেন, তখন ড্রাইভ ব্যবহারকারীকে সেই অ্যাপের ওপেন URL-এ সংজ্ঞায়িত করে যা একটি ড্রাইভ UI ইন্টিগ্রেশন কনফিগার করুন

আপনি একটি ড্রাইভ UI ইন্টিগ্রেশন কনফিগার করার সময় "আমদানি করা" বাক্সে টিক চিহ্ন দিয়ে থাকলে, ব্যবহারকারী অ্যাপ-নির্দিষ্ট এবং Google Workspace ফাইল খোলার জন্য একটি সমন্বয় নির্বাচন করতে পারেন। আপনি যখন একটি ড্রাইভ UI ইন্টিগ্রেশন কনফিগার করেন, তখন অ্যাপ-নির্দিষ্ট ফাইলগুলিকে "ডিফল্ট MIME প্রকার" এবং "ডিফল্ট ফাইল এক্সটেনশন" ফিল্ডে সংজ্ঞায়িত করা হয়, যেখানে Google Workspace ফাইলগুলি "সেকেন্ডারি MIME প্রকার" এবং "সেকেন্ডারি ফাইল এক্সটেনশন" ফিল্ডে সংজ্ঞায়িত করা হয়।

ব্যবহারকারী খুলতে চায় এমন প্রতিটি ফাইলের জন্য, ড্রাইভ আপনার সংজ্ঞায়িত ডিফল্ট এবং সেকেন্ডারি MIME প্রকারগুলির বিপরীতে MIME প্রকারগুলি পরীক্ষা করে:

  • "ডিফল্ট MIME প্রকার" ক্ষেত্রে সংজ্ঞায়িত MIME প্রকারের জন্য, ফাইল আইডি আপনার অ্যাপে পাঠানো হয়। অ্যাপ-নির্দিষ্ট ফাইলগুলি কীভাবে পরিচালনা করবেন সে সম্পর্কে তথ্যের জন্য, অ্যাপ-নির্দিষ্ট নথিগুলির জন্য একটি খোলা URL হ্যান্ডেল দেখুন।

  • "সেকেন্ডারি MIME প্রকার" ফিল্ডে সংজ্ঞায়িত MIME প্রকারের জন্য, ড্রাইভ UI একটি ডায়ালগ প্রদর্শন করে যা ব্যবহারকারীকে জিজ্ঞাসা করে যে Google Workspace ফাইলটিকে কোন ধরনের ফাইলে রূপান্তর করতে হবে। উদাহরণ স্বরূপ, আপনি যদি ড্রাইভ UI-এ একটি Google ডক্স ফাইল নির্বাচন করেন এবং "সেকেন্ডারি MIME প্রকার" ক্ষেত্রে আপনার অ্যাপটি টেক্সট/প্লেইন বা অ্যাপ্লিকেশন/পিডিএফ সমর্থন করে, তাহলে ড্রাইভ UI ব্যবহারকারীকে জিজ্ঞাসা করে যে তারা প্লেইন টেক্সট বা পিডিএফ-এ রূপান্তর করতে চান কিনা। .

    Google Workspace ফাইলগুলি কীভাবে পরিচালনা করবেন সে সম্পর্কে তথ্যের জন্য, Google Workspace ডকুমেন্টের জন্য একটি খোলা URL হ্যান্ডেল দেখুন। Google Workspace ডকুমেন্ট এবং MIME টাইপ কনভার্সন ফর্ম্যাটের তালিকার জন্য, Google Workspace ডকুমেন্টের জন্য MIME প্রকার এক্সপোর্ট দেখুন।

অ্যাপ-নির্দিষ্ট নথিগুলির জন্য একটি ওপেন URL পরিচালনা করুন

একটি ড্রাইভ UI ইন্টিগ্রেশন কনফিগার করুন -এ উল্লিখিত হিসাবে, আপনার অ্যাপ ফাইল খোলার জন্য তথ্য সহ টেমপ্লেট ভেরিয়েবল গ্রহণ করে। আপনার অ্যাপ একটি state প্যারামিটারের মধ্যে টেমপ্লেট ভেরিয়েবলের একটি ডিফল্ট সেট পায়। একটি অ্যাপ-নির্দিষ্ট ওপেন URL-এর জন্য ডিফল্ট state তথ্য হল:

{
  "ids": ["ID"],
  "resourceKeys":{"RESOURCE_KEYS":"RESOURCE_KEYS"},
  "action":"open",
  "userId":"USER_ID"
}

এই আউটপুট নিম্নলিখিত মান অন্তর্ভুক্ত:

  • ID : মূল ফোল্ডারের আইডি।
  • RESOURCE_KEYS : ফাইল আইডিগুলির একটি JSON অভিধান তাদের নিজ নিজ রিসোর্স কীগুলিতে ম্যাপ করা হয়েছে৷
  • open : কর্ম সঞ্চালিত হচ্ছে. একটি Open URL ব্যবহার করার সময় মানটি open থাকে।
  • USER_ID : প্রোফাইল আইডি যা ব্যবহারকারীকে অনন্যভাবে সনাক্ত করে।

আপনার অ্যাপকে এই পদক্ষেপগুলি অনুসরণ করে এই অনুরোধে কাজ করতে হবে:

  1. যাচাই করুন যে action ক্ষেত্রের একটি মান open আছে এবং ids ক্ষেত্র উপস্থিত রয়েছে।
  2. ব্যবহারকারীর জন্য একটি নতুন সেশন তৈরি করতে userId মান ব্যবহার করুন। সাইন-ইন করা ব্যবহারকারীদের সম্পর্কে আরও তথ্যের জন্য, ব্যবহারকারী এবং নতুন ইভেন্ট দেখুন।
  3. অনুমতি পরীক্ষা করতে, ফাইল মেটাডেটা আনতে এবং ID মান ব্যবহার করে ফাইল সামগ্রী ডাউনলোড করতে files.get পদ্ধতি ব্যবহার করুন।
  4. অনুরোধে resourceKeys সেট করা থাকলে, X-Goog-Drive-Resource-Keys অনুরোধ শিরোনাম সেট করুন। রিসোর্স কী সম্পর্কে আরও তথ্যের জন্য, রিসোর্স কী ব্যবহার করে লিঙ্ক-ভাগ করা ফাইল অ্যাক্সেস করুন দেখুন।

state প্যারামিটারটি ইউআরএল-এনকোডেড, তাই আপনার অ্যাপকে অবশ্যই এস্কেপ অক্ষরগুলি পরিচালনা করতে হবে এবং এটি JSON হিসাবে পার্স করতে হবে।

Google Workspace ডকুমেন্টের জন্য একটি ওপেন ইউআরএল পরিচালনা করুন

একটি ড্রাইভ UI ইন্টিগ্রেশন কনফিগার করুন এ উল্লিখিত হিসাবে, আপনার অ্যাপ একটি state প্যারামিটারের মধ্যে টেমপ্লেট ভেরিয়েবলের একটি ডিফল্ট সেট পায়৷ Google Workspace Open URL-এর জন্য ডিফল্ট state তথ্য হল:

{
  "exportIds": ["ID"],
  "resourceKeys":{"RESOURCE_KEYS":"RESOURCE_KEYS"},
  "action":"open",
  "userId":"USER_ID"
}

এই আউটপুট নিম্নলিখিত মান অন্তর্ভুক্ত:

  • EXPORT_ID : রপ্তানি করা ফাইল আইডিগুলির একটি কমা দ্বারা পৃথক করা তালিকা (শুধুমাত্র অন্তর্নির্মিত Google নথি খোলার সময় ব্যবহৃত হয়)।
  • RESOURCE_KEYS : ফাইল আইডিগুলির একটি JSON অভিধান তাদের নিজ নিজ রিসোর্স কীগুলিতে ম্যাপ করা হয়েছে৷
  • open : কর্ম সঞ্চালিত হচ্ছে. একটি Open URL ব্যবহার করার সময় মানটি open থাকে।
  • USER_ID : প্রোফাইল আইডি যা ব্যবহারকারীকে শনাক্ত করে।

আপনার অ্যাপকে এই পদক্ষেপগুলি অনুসরণ করে এই অনুরোধে কাজ করতে হবে:

  1. state ফিল্ডে open ভ্যালু এবং exportIds ফিল্ডের উপস্থিতি উভয়ই সনাক্ত করে এটি একটি ফাইল খোলার অনুরোধ যাচাই করুন৷

  2. অনুমতি পরীক্ষা করতে, ফাইল মেটাডেটা আনতে, এবং EXPORT_ID মান ব্যবহার করে MIME প্রকার নির্ধারণ করতে files.get পদ্ধতি ব্যবহার করুন।

  3. files.export পদ্ধতি ব্যবহার করে ফাইলের বিষয়বস্তু রূপান্তর করুন। নিম্নলিখিত কোডের নমুনাটি অনুরোধ করা MIME প্রকারে কীভাবে একটি Google Workspace ডকুমেন্ট এক্সপোর্ট করতে হয় তা দেখায়।

  4. অনুরোধে resourceKey সেট করা থাকলে, X-Goog-Drive-Resource-Keys অনুরোধ শিরোনাম সেট করুন। রিসোর্স কী সম্পর্কে আরও তথ্যের জন্য, রিসোর্স কী ব্যবহার করে লিঙ্ক-ভাগ করা ফাইল অ্যাক্সেস করুন দেখুন।

    জাভা

    drive/snippets/drive_v3/src/main/java/ExportPdf.java
    import com.google.api.client.googleapis.json.GoogleJsonResponseException;
    import com.google.api.client.http.HttpRequestInitializer;
    import com.google.api.client.http.javanet.NetHttpTransport;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.services.drive.Drive;
    import com.google.api.services.drive.DriveScopes;
    import com.google.auth.http.HttpCredentialsAdapter;
    import com.google.auth.oauth2.GoogleCredentials;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Arrays;
    
    /* Class to demonstrate use-case of drive's export pdf. */
    public class ExportPdf {
    
      /**
       * Download a Document file in PDF format.
       *
       * @param realFileId file ID of any workspace document format file.
       * @return byte array stream if successful, {@code null} otherwise.
       * @throws IOException if service account credentials file not found.
       */
      public static ByteArrayOutputStream exportPdf(String realFileId) throws IOException {
        // Load pre-authorized user credentials from the environment.
        // TODO(developer) - See https://developers.google.com/identity for
        // guides on implementing OAuth2 for your application.
        GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
            .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
        HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
            credentials);
    
        // Build a new authorized API client service.
        Drive service = new Drive.Builder(new NetHttpTransport(),
            GsonFactory.getDefaultInstance(),
            requestInitializer)
            .setApplicationName("Drive samples")
            .build();
    
        OutputStream outputStream = new ByteArrayOutputStream();
        try {
          service.files().export(realFileId, "application/pdf")
              .executeMediaAndDownloadTo(outputStream);
    
          return (ByteArrayOutputStream) outputStream;
        } catch (GoogleJsonResponseException e) {
          // TODO(developer) - handle error appropriately
          System.err.println("Unable to export file: " + e.getDetails());
          throw e;
        }
      }
    }

    পাইথন

    drive/snippets/drive-v3/file_snippet/export_pdf.py
    import io
    
    import google.auth
    from googleapiclient.discovery import build
    from googleapiclient.errors import HttpError
    from googleapiclient.http import MediaIoBaseDownload
    
    
    def export_pdf(real_file_id):
      """Download a Document file in PDF format.
      Args:
          real_file_id : file ID of any workspace document format file
      Returns : IO object with location
    
      Load pre-authorized user credentials from the environment.
      TODO(developer) - See https://developers.google.com/identity
      for guides on implementing OAuth2 for the application.
      """
      creds, _ = google.auth.default()
    
      try:
        # create drive api client
        service = build("drive", "v3", credentials=creds)
    
        file_id = real_file_id
    
        # pylint: disable=maybe-no-member
        request = service.files().export_media(
            fileId=file_id, mimeType="application/pdf"
        )
        file = io.BytesIO()
        downloader = MediaIoBaseDownload(file, request)
        done = False
        while done is False:
          status, done = downloader.next_chunk()
          print(f"Download {int(status.progress() * 100)}.")
    
      except HttpError as error:
        print(f"An error occurred: {error}")
        file = None
    
      return file.getvalue()
    
    
    if __name__ == "__main__":
      export_pdf(real_file_id="1zbp8wAyuImX91Jt9mI-CAX_1TqkBLDEDcr2WeXBbKUY")

    Node.js

    drive/snippets/drive_v3/file_snippets/export_pdf.js
    /**
     * Download a Document file in PDF format
     * @param{string} fileId file ID
     * @return{obj} file status
     * */
    async function exportPdf(fileId) {
      const {GoogleAuth} = require('google-auth-library');
      const {google} = require('googleapis');
    
      // Get credentials and build service
      // TODO (developer) - Use appropriate auth mechanism for your app
      const auth = new GoogleAuth({
        scopes: 'https://www.googleapis.com/auth/drive',
      });
      const service = google.drive({version: 'v3', auth});
    
      try {
        const result = await service.files.export({
          fileId: fileId,
          mimeType: 'application/pdf',
        });
        console.log(result.status);
        return result;
      } catch (err) {
        // TODO(developer) - Handle error
        throw err;
      }
    }

    পিএইচপি

    drive/snippets/drive_v3/src/DriveExportPdf.php
    use Google\Client;
    use Google\Service\Drive;
    function exportPdf()
    {
        try {
            $client = new Client();
            $client->useApplicationDefaultCredentials();
            $client->addScope(Drive::DRIVE);
            $driveService = new Drive($client);
            $realFileId = readline("Enter File Id: ");
            $fileId = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo';
            $fileId = $realFileId;
            $response = $driveService->files->export($fileId, 'application/pdf', array(
                'alt' => 'media'));
            $content = $response->getBody()->getContents();
            return $content;
    
        }  catch(Exception $e) {
             echo "Error Message: ".$e;
        }
    
    }

রূপান্তরিত ফাইলগুলিকে শুধুমাত্র পঠনযোগ্য হিসাবে প্রদর্শন করুন বা ব্যবহারকারীকে ফাইলটিকে নতুন ফাইলের ধরণ হিসাবে সংরক্ষণ করতে দিয়ে একটি ডায়ালগ উপস্থাপন করুন।

state প্যারামিটারটি ইউআরএল-এনকোডেড, তাই আপনার অ্যাপকে অবশ্যই এস্কেপ অক্ষরগুলি পরিচালনা করতে হবে এবং এটি JSON হিসাবে পার্স করতে হবে।

ব্যবহারকারী এবং নতুন ইভেন্ট

ড্রাইভ অ্যাপ্লিকেশানগুলিকে সম্ভাব্য সাইন-ইন হিসাবে সমস্ত "ওপেন উইথ" ইভেন্ট বিবেচনা করা উচিত৷ কিছু ব্যবহারকারীর একাধিক অ্যাকাউন্ট থাকতে পারে, তাই state প্যারামিটারে ব্যবহারকারী আইডি বর্তমান সেশনের সাথে নাও মিলতে পারে। যদি state প্যারামিটারের ব্যবহারকারী আইডি বর্তমান সেশনের সাথে মেলে না, তাহলে আপনার অ্যাপের বর্তমান সেশনটি শেষ করুন এবং অনুরোধ করা ব্যবহারকারী হিসেবে সাইন ইন করুন।

গুগল ড্রাইভ UI থেকে একটি অ্যাপ্লিকেশন খোলার পাশাপাশি, অ্যাপ্লিকেশনগুলি একটি অ্যাপের মধ্যে থেকে সামগ্রী নির্বাচন করতে একটি ফাইল পিকার প্রদর্শন করতে পারে। আরও তথ্যের জন্য, Google পিকার দেখুন।