এই কুইকস্টার্টে, আপনি আপনার অ্যাকাউন্টের জন্য একটি OAuth টোকেন পাবেন এবং আপনি ডেটা পোর্টেবিলিটি API এন্ডপয়েন্টে বারবার অনুরোধ পাঠান।
ব্যবহারকারীর ডেটাতে সময়-ভিত্তিক অ্যাক্সেসের জন্য কীভাবে ডেটা পোর্টেবিলিটি API ব্যবহার করতে হয় তা এই কুইকস্টার্ট কভার করে। ব্যবহারকারীর ডেটাতে এককালীন অ্যাক্সেসের জন্য, ডেটা পোর্টেবিলিটি API ব্যবহার শুরু করুন দেখুন। আপনার অনুরোধে কীভাবে সময় ফিল্টার প্রয়োগ করবেন তা শিখতে, সময় ফিল্টার প্রয়োগ করুন দেখুন।
আপনি কি শিখুন
এই কুইকস্টার্টে আপনি শিখবেন কিভাবে:
-  একটি বৈধ OAuth টোকেন প্রদান করে InitiatePortabilityArchiveএন্ডপয়েন্টে একটি প্রমাণীকৃত অনুরোধ পাঠান। প্রতিক্রিয়াটিতে একটি বৈধjob_idথাকা উচিত।
-  GetPortabilityArchiveStateএন্ডপয়েন্টে একটি প্রমাণীকৃত অনুরোধ পাঠান। প্রতিক্রিয়াটিতে একটি বৈধ কাজের অবস্থা এবং কাজটি সম্পূর্ণ হলে একটি স্বাক্ষরিত URL থাকতে হবে।
-  একই শংসাপত্র ব্যবহার করে দ্বিতীয়বার InitiatePortabilityArchiveএন্ডপয়েন্টে একটি বৈধ OAuth টোকেন সহ একটি প্রমাণীকৃত অনুরোধ পাঠান। প্রাথমিক অনুরোধের 24 ঘন্টার মধ্যে অনুরোধ করা হলে এটি একটিFAILED_PRECONDITIONত্রুটি প্রদান করে৷
পূর্বশর্ত
এই কুইকস্টার্ট চালানোর জন্য, আপনাকে করতে হবে:
- যাচাই করুন যে ডেটা পোর্টেবিলিটি API আপনার অবস্থানের ব্যবহারকারীদের জন্য উপলব্ধ। সমর্থিত দেশ এবং অঞ্চলগুলির একটি তালিকার জন্য, "একটি তৃতীয় পক্ষের সাথে আপনার ডেটার একটি অনুলিপি ভাগ করুন" পৃষ্ঠায় সাধারণ প্রশ্নগুলি দেখুন৷
- ডেটা পোর্টেবিলিটি API-এর জন্য সেটআপ পদক্ষেপগুলি সম্পূর্ণ করুন৷
-  সার্ভার-সাইড ওয়েব অ্যাপ্লিকেশানগুলির জন্য OAuth কনফিগার করতে পদক্ষেপগুলি অনুসরণ করুন৷- আপনি যখন আপনার অনুমোদনের শংসাপত্র তৈরি করেন, তখন আপনার OAuth 2.0 ক্লায়েন্ট আইডি, আপনার ক্লায়েন্ট গোপনীয়তা এবং আপনার অনুমোদিত পুনঃনির্দেশ URI (উদাহরণস্বরূপ, https://google.com) একটি নোট করুন। কুইকস্টার্টে পরে আপনার সেগুলি দরকার৷
-  আপনি যখন ডেটা পোর্টেবিলিটি API-এর জন্য স্কোপগুলি কনফিগার করেন , তখন মনে রাখবেন যে এই কুইকস্টার্টটি myactivity.searchরিসোর্স গ্রুপ ব্যবহার করে: https://www.googleapis.com/auth/dataportability.myactivity.search।
- আপনি যখন অ্যাক্সেসের অনুমতি দিতে চান এমন সময় নির্বাচন করার সময়, সময়-ভিত্তিক অ্যাক্সেস পরীক্ষা করার জন্য আপনার 30 দিন নির্বাচন করা উচিত।
 
- একটি OAuth টোকেন পান।
- আপনার প্রতিষ্ঠানের মালিকানাধীন বা নিয়ন্ত্রিত অ্যাকাউন্টে অ্যাক্সেস পান। এই অ্যাকাউন্টের সার্চ অ্যাক্টিভিটি ডেটা এই কুইকস্টার্টে এক্সপোর্ট করা হয়।
একটি OAuth টোকেন পান
এই কুইকস্টার্টের জন্য, আপনি একটি URL ব্যবহার করে একটি OAuth টোকেন পাওয়ার জন্য একটি অনুমোদনের অনুরোধ পাঠান। এই প্রক্রিয়াটি সার্ভার-সাইড ওয়েব অ্যাপের জন্য প্রবাহ ব্যবহার করে। এই প্রবাহটি একটি রিফ্রেশ টোকেন তৈরি করে যা আপনি পরবর্তী রপ্তানির জন্য ব্যবহার করতে পারেন।
একটি OAuth টোকেন পেতে:
- নিচের মত একটি URL রচনা করুন। - https://accounts.google.com/o/oauth2/v2/auth? client_id=client_id& redirect_uri=redirect_uri& response_type=code& access_type=offline& scope=https://www.googleapis.com/auth/dataportability.myactivity.search& state=developer-specified-value - URL-এ: -  client_idহল আপনার OAuth ক্লায়েন্ট আইডি।
-  redirect_uriহল আপনার অনুমোদিত রিডাইরেক্ট URI; উদাহরণস্বরূপ, https://google.com।
 - লক্ষ্য করুন যে এই কুইকস্টার্টের জন্য ইউআরএলে যে স্কোপ ব্যবহার করা হয়েছে সেটি হল সার্চ অ্যাক্টিভিটি স্কোপ। আপনি YouTube কার্যকলাপ স্কোপ বা উভয় স্কোপ ব্যবহার করতে পারেন। 
-  
- আপনার ব্রাউজারের ঠিকানা বারে URLটি আটকান এবং OAuth প্রবাহের ধাপগুলি অনুসরণ করুন৷ এই প্রবাহের জন্য আপনাকে আপনার প্রতিষ্ঠানের মালিকানাধীন বা নিয়ন্ত্রিত অ্যাকাউন্টে সাইন ইন করতে হবে যা আপনি এই দ্রুত শুরুর জন্য ব্যবহার করছেন। - এটি সেই অ্যাকাউন্ট যা OAuth স্কোপের সাথে সম্মতি দিচ্ছে। সম্মতি স্ক্রীনটি এইরকম হওয়া উচিত (আপনার স্ক্রীনের পাঠ্যটি এই চিত্রের পাঠ্য থেকে আলাদা হতে পারে):  
- অ্যাক্সেস মঞ্জুর করার সুযোগ এবং অ্যাকাউন্টের ডেটাতে অ্যাক্সেস ভাগ করার সময় দৈর্ঘ্য (একবার, 30 দিন বা 180 দিন) চয়ন করুন। এই দ্রুত শুরুর জন্য, 30 দিন বেছে নিন। 
- সম্মতি দেওয়ার পরে এবং অ্যাক্সেসের সময়কাল নির্ধারণ করার পরে, আপনাকে রিডাইরেক্ট URI—https://google.com-এ ফরোয়ার্ড করা উচিত। ঠিকানা বারে তৈরি করা URLটিতে একটি অনুমোদন কোড রয়েছে যা আপনি পরবর্তী ধাপে একটি OAuth টোকেনের জন্য বিনিময় করবেন। - উদাহরণ স্বরূপ, যদি ব্যবহারকারীর অ্যাকাউন্ট - dataportability.myactivity.searchস্কোপে OAuth-কে অ্যাক্সেস দেয়, তাহলে জেনারেট করা ইউআরএল দেখতে এইরকম হবে:- https://google.com/#state=developer-specified-value&code=your_auth_code&scope=https://www.googleapis.com/auth/dataportability.myactivity.search 
- একটি অ্যাক্সেস টোকেনের জন্য একটি অনুমোদন কোড বিনিময় করতে, এর সাথে oauth টোকেন এন্ডপয়েন্টে কল করুন: - curl https://oauth2.googleapis.com/token\ -H 'Content-Type: application/x-www-form-urlencoded' -X POST\ -d 'code=your_auth_code&\ redirect_uri=redirect_uri\ client_id=client_id&\ client_secret=client_secret&\ grant_type=authorization_code' - প্রতিক্রিয়া এই মত হওয়া উচিত: - { "access_token": your_OAuth_token, "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/dataportability.myactivity.search", "refresh_token": your_refresh_token, "refresh_token_expires_in": 2591999 } - URL-এ, your_OAuth_token হল একটি স্ট্রিং যা টোকেনকে উপস্থাপন করে। - refresh_token_expires_inক্ষেত্রটি সেকেন্ডের মধ্যে রয়েছে এবং ব্যবহারকারী 30 দিন (2592000 সেকেন্ড) বা 180 দিন (15552000 সেকেন্ড) অ্যাক্সেস বেছে নিয়েছে কিনা তা প্রতিফলিত করে। যদি আপনার অ্যাপের একটি পরীক্ষামূলক প্রকাশনার স্থিতি থাকে, তাহলে ব্যবহারকারীর নির্বাচন নির্বিশেষে আপনার কাছে 7 দিন (604800 সেকেন্ড) অ্যাক্সেস থাকবে।
- OAuth টোকেন যাচাই করতে, আপনার ব্রাউজারে এই URL পেস্ট করুন: - https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=your_OAuth_token - প্রতিক্রিয়া এই মত হওয়া উচিত: - { "azp": <your_azp_value>, "aud": <your_aud_value>, "scope": "https://www.googleapis.com/auth/dataportability.myactivity.search", "exp": "1694210968", "expires_in": "3334", "access_type": "online" }- অনুরোধ করার জন্য আপনার - azpবা- audফিল্ডের প্রয়োজন নেই।- azpক্ষেত্রটি অনুমোদিত উপস্থাপকের- client_idপ্রতিনিধিত্ব করে, এবং- audক্ষেত্রটি সেই শ্রোতাদের সনাক্ত করে যার জন্য এই টোকেনটি তৈরি করা হয়েছে, যা আপনার আবেদনের জন্য ক্লায়েন্ট আইডিগুলির একটির সমান হবে৷
- আপনার OAuth টোকেন এবং আপনার API কী সংগ্রহ করুন। ডেটা পোর্টেবিলিটি API-তে কল করার জন্য আপনার এগুলোর প্রয়োজন। 
শেষ পয়েন্টে অনুরোধ পাঠান
এই কুইকস্টার্টে আপনি ডেটা পোর্টেবিলিটি API এন্ডপয়েন্ট কল করতে কার্ল কমান্ড ব্যবহার করেন। এই কমান্ডগুলির জন্য আপনার আগে সংগ্রহ করা OAuth টোকেন এবং API কী প্রয়োজন।
ডেটা পোর্টেবিলিটি API কল করতে:
- প্রথমে, আপনি - InitiatePortabilityArchiveএন্ডপয়েন্টে একটি প্রমাণীকৃত অনুরোধ পাঠান। এই অনুরোধ একটি সংরক্ষণাগার কাজ শুরু.- নিম্নলিখিত কার্ল কমান্ড চালান: - curl -H 'Authorization: Bearer your_OAuth_token' -X POST \ -H "Content-Type: application/json; charset=utf-8" \ --data '{"resources":["myactivity.search"]}' \ https://dataportability.googleapis.com/v1/portabilityArchive:initiate - আদেশে: -  your_OAuth_tokenহল আপনার OAuth টোকেন।
 - InitiatePortabilityArchiveঅনুরোধ একটি- job_idএবং- accessTypeপ্রদান করে। কাজের আইডি ডেটা সংরক্ষণাগারের অবস্থা পুনরুদ্ধার করতে ব্যবহার করা হয় এবং অ্যাক্সেসের ধরন নির্ধারণ করে যে আপনাকে ডেটাতে এক-বার বা সময়-ভিত্তিক অ্যাক্সেস দেওয়া হয়েছে কিনা। সময়-ভিত্তিক অ্যাক্সেসের জন্য, আপনি দেখতে পাবেন:- { "archiveJobId": "<your_job_id>" "accessType": "ACCESS_TYPE_TIME_BASED" }- আপনি একটি বৈধ OAuth টোকেন প্রদান করতে ব্যর্থ হলে, এই ত্রুটি বার্তাটি ফেরত দেওয়া হয়: - Request had invalid authentication credentials. Expected OAuth 2.0 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project. 
-  
- এর পরে, আপনি আর্কাইভ কাজের স্থিতি পুনরুদ্ধার করতে - GetPortabilityArchiveStateএন্ডপয়েন্টে একটি প্রমাণীকৃত অনুরোধ পাঠান।- নিম্নলিখিত কার্ল কমান্ড চালান: - curl -H 'Authorization: Bearer your_OAuth_token' -X GET \ -H "Content-Type: application/json; charset=utf-8" \ https://dataportability.googleapis.com/v1/archiveJobs/your_job_id/portabilityArchiveState - আদেশে: -  your_OAuth_tokenহল আপনার OAuth টোকেন।
-  your_job_idহল চাকরির আইডি যাInitiatePortabilityArchiveঅনুরোধ দ্বারা ফেরত দেওয়া হয়।
 - প্রতিক্রিয়া কাজের অবস্থার উপর ভিত্তি করে। কাজ সম্পূর্ণ না হলে, প্রতিক্রিয়া বর্তমান অবস্থা প্রদান করে। কাজ সম্পূর্ণ না হওয়া পর্যন্ত আপনাকে পর্যায়ক্রমে এই এন্ডপয়েন্টে অনুরোধ পাঠাতে হবে। - { "state": "IN_PROGRESS" }- কাজটি সম্পূর্ণ হলে, প্রতিক্রিয়াতে রাজ্য এবং এক বা একাধিক স্বাক্ষরিত URL থাকে যা ডেটা সংরক্ষণাগার ডাউনলোড করতে ব্যবহৃত হয়। - { "state": "COMPLETE", "urls": [ "<signed_url>" ] }- ডেটা সংরক্ষণাগারটি ডাউনলোড করতে আপনার ব্রাউজারে স্বাক্ষরিত URLটি আটকান৷ আপনার সংরক্ষণাগারের বিষয়বস্তু পরীক্ষা করা উচিত যাতে এটি প্রত্যাশিত অনুসন্ধান কার্যকলাপ ডেটা ধারণ করে। - আপনি যদি প্রতিক্রিয়াতে একটি - FAILEDঅবস্থা পান, আপনি- RetryPortabilityArchiveপদ্ধতি ব্যবহার করে রপ্তানির পুনরায় চেষ্টা করতে পারেন।
-  
- InitiatePortabilityArchiveএন্ডপয়েন্টে একটি প্রমাণীকৃত অনুরোধ পাঠাতে পূর্ববর্তী কমান্ডটি পুনরাবৃত্তি করুন।- curl -H 'Authorization: Bearer your_OAuth_token' -X POST \ -H "Content-Type: application/json; charset=utf-8" \ --data '{"resources":["myactivity.search"]}' \ https://dataportability.googleapis.com/v1/portabilityArchive:initiate - আদেশে: -  your_OAuth_tokenহল আপনার OAuth টোকেন।
 - প্রতিক্রিয়াটি নির্দেশ করবে যে আপনি ইতিমধ্যেই - myactivity.searchসংস্থান রপ্তানি করেছেন এবং আপনি কখন আবার চেষ্টা করতে পারেন তার জন্য একটি টাইমস্ট্যাম্প৷- ... "error": { "code": 429, "message": "Requested resources have already been exported. You can initiate another export after #{timestamp_after_24hrs}.", "status": "RESOURCE_EXHAUSTED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "RESOURCE_EXHAUSTED_TIME_BASED", "domain": "dataportability.googleapis.com" "metadata": { "previous_job_ids": "#{previous_job_ids}" "access_type": "ACCESS_TYPE_TIME_BASED" "timestamp_after_24hrs": "#{timestamp_after_24hrs}" ...
-  
- 24 ঘন্টা পরে আপনি একটি নতুন এক্সপোর্টের অনুরোধ করতে পারেন, তবে প্রথমে আপনাকে একটি নতুন অ্যাক্সেস টোকেনের জন্য আপনার রিফ্রেশ টোকেন বিনিময় করতে হবে। - curl https://oauth2.googleapis.com/token\ -H 'Content-Type: application/x-www-form-urlencoded' -X POST\ -d 'refresh_token=your_refresh_token&\ client_id=client_id&\ client_secret=client_secret&\ grant_type=refresh_token' - প্রতিক্রিয়া এই মত হওয়া উচিত: - { "access_token": your_OAuth_token, "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/dataportability.myactivity.search", "refresh_token_expires_in": 2505599 } - ব্যবহারকারী যদি অ্যাক্সেস পুনর্নবীকরণ করেন, নতুন মেয়াদ শেষ হওয়ার সময় - refresh_token_expires_inক্ষেত্রে প্রতিফলিত হয়।- আপনি - InitiatePortabilityArchiveএবং- GetPortabilityArchiveStateপদক্ষেপগুলি পুনরাবৃত্তি করতে নতুন অ্যাক্সেস টোকেন ব্যবহার করতে পারেন।