এই নির্দেশিকাটি আপনাকে প্রমাণীকরণের জন্য পূর্ববর্তী গুগল সাইন-ইন প্ল্যাটফর্ম লাইব্রেরি থেকে নতুন গুগল আইডেন্টিটি সার্ভিসেস লাইব্রেরিতে জাভাস্ক্রিপ্ট লাইব্রেরি সফলভাবে স্থানান্তরের জন্য প্রয়োজনীয় পরিবর্তন এবং পদক্ষেপগুলো বুঝতে সাহায্য করে।
আপনার ক্লায়েন্ট যদি অনুমোদনের জন্য জাভাস্ক্রিপ্টের জন্য গুগল এপিআই ক্লায়েন্ট লাইব্রেরি বা অন্য কোনো পূর্ববর্তী লাইব্রেরি ব্যবহার করে থাকে, তাহলে আরও তথ্যের জন্য ‘গুগল আইডেন্টিটি সার্ভিসে মাইগ্রেট করুন’ দেখুন।
প্রমাণীকরণ এবং অনুমোদন
প্রমাণীকরণের মাধ্যমে কোনো ব্যক্তির পরিচয় নিশ্চিত করা হয় এবং এটিকে সাধারণত ইউজার সাইন-আপ বা সাইন-ইন বলা হয়। অনুমোদন হলো ডেটা বা রিসোর্সে অ্যাক্সেস মঞ্জুর বা প্রত্যাখ্যান করার প্রক্রিয়া। উদাহরণস্বরূপ, আপনার অ্যাপ ব্যবহারকারীর গুগল ড্রাইভে অ্যাক্সেস করার জন্য তার অনুমতি চায়।
পূর্ববর্তী গুগল সাইন-ইন প্ল্যাটফর্ম লাইব্রেরির মতোই, নতুন গুগল আইডেন্টিটি সার্ভিসেস লাইব্রেরিটিও অথেনটিকেশন এবং অথরাইজেশন উভয় প্রক্রিয়াকে সমর্থন করার জন্য তৈরি করা হয়েছে।
তবে, নতুন লাইব্রেরিটি এই দুটি প্রক্রিয়াকে আলাদা করে, যার ফলে ডেভেলপারদের জন্য আপনার অ্যাপের সাথে গুগল অ্যাকাউন্ট সংযুক্ত করার জটিলতা কমে যায়।
আপনার ব্যবহারের ক্ষেত্রটি যদি শুধুমাত্র প্রমাণীকরণ সম্পর্কিত হয়, তাহলে এই পৃষ্ঠাটি পড়তে থাকুন।
আপনার ব্যবহারের ক্ষেত্রে যদি অনুমোদন অন্তর্ভুক্ত থাকে, তাহলে আপনার অ্যাপ্লিকেশনটি নতুন ও উন্নত এপিআই ব্যবহার করছে কিনা তা নিশ্চিত করতে ‘ব্যবহারকারীর অনুমোদন কীভাবে কাজ করে’ এবং ‘গুগল আইডেন্টিটি সার্ভিসে মাইগ্রেট করুন’ পড়ুন।
কী পরিবর্তন হয়েছে
ব্যবহারকারীদের জন্য নতুন গুগল আইডেন্টিটি সার্ভিসেস লাইব্রেরিটি ব্যবহারযোগ্যতার ক্ষেত্রে অসংখ্য উন্নতি এনেছে। এর উল্লেখযোগ্য দিকগুলো হলো:
- কম ধাপের নতুন ওয়ান ট্যাপ এবং স্বয়ংক্রিয় সাইন-ইন প্রক্রিয়া।
- ব্যবহারকারীর পছন্দ অনুযায়ী সাজানো একটি নতুন সাইন-ইন বাটন,
- ওয়েব জুড়ে সামঞ্জস্যপূর্ণ ব্র্যান্ডিং এবং অভিন্ন সাইন-ইন পদ্ধতি বোঝাপড়া ও বিশ্বাস বৃদ্ধি করে।
- দ্রুত কন্টেন্টে পৌঁছানো যায়; ব্যবহারকারীরা প্রথমে কোনো লগইন বা অ্যাকাউন্ট পেজে না গিয়েই আপনার সাইটের যেকোনো জায়গা থেকে সরাসরি সাইন-আপ এবং সাইন-ইন করতে পারেন।
ডেভেলপারদের জন্য আমাদের লক্ষ্য হলো জটিলতা কমানো, নিরাপত্তা উন্নত করা এবং আপনাদের ইন্টিগ্রেশন যতটা সম্ভব দ্রুত করা। এই উন্নতিগুলোর মধ্যে কয়েকটি হলো:
- শুধুমাত্র HTML ব্যবহার করে আপনার সাইটের স্ট্যাটিক কন্টেন্টে ব্যবহারকারী সাইন-ইন যোগ করার বিকল্প।
- সাইন-ইন অথেন্টিকেশনকে অথরাইজেশন থেকে পৃথক করা এবং ব্যবহারকারীর ডেটা শেয়ার করার ফলে, আপনার সাইটে ব্যবহারকারীদের সাইন ইন করানোর জন্য OAuth 2.0 ইন্টিগ্রেশনের জটিলতার আর প্রয়োজন নেই।
- পপআপ এবং রিডাইরেক্ট উভয় মোডই সমর্থিত থাকছে, কিন্তু গুগলের OAuth 2.0 পরিকাঠামো এখন আপনার ব্যাকএন্ড সার্ভারের লগইন এন্ডপয়েন্টে রিডাইরেক্ট করে।
- পূর্ববর্তী গুগল আইডেন্টিটি এবং গুগল এপিআই জাভাস্ক্রিপ্ট লাইব্রেরি উভয়ের সক্ষমতাগুলোকে একত্রিত করে একটি নতুন লাইব্রেরিতে পরিণত করা।
- সাইন-ইন প্রতিক্রিয়ার জন্য, এখন আপনি প্রমিজ ( Promise) ব্যবহার করবেন কি না, সেই সিদ্ধান্ত নিতে পারবেন এবং সরলতার জন্য গেটার (getter) ধরনের ফাংশনের মাধ্যমে পরোক্ষ পদ্ধতি (indirection) সরিয়ে দেওয়া হয়েছে।
সাইন-ইন মাইগ্রেশনের একটি উদাহরণ
আপনি যদি বিদ্যমান গুগল সাইন-ইন বাটনটি পরিবর্তন করে শুধুমাত্র ব্যবহারকারীদের আপনার সাইটে সাইন ইন করাতে আগ্রহী হন, তবে সবচেয়ে সহজ পরিবর্তনটি হলো নতুন ব্যক্তিগতকৃত বাটনটিতে আপডেট করা। জাভাস্ক্রিপ্ট লাইব্রেরি অদলবদল করে এবং একটি নতুন সাইন-ইন অবজেক্ট ব্যবহার করার জন্য আপনার কোডবেস আপডেট করার মাধ্যমে এটি সম্পন্ন করা যেতে পারে।
লাইব্রেরি এবং কনফিগারেশন
ব্যবহারকারীর প্রমাণীকরণ এবং অনুমোদনের জন্য পূর্ববর্তী গুগল সাইন-ইন প্ল্যাটফর্ম লাইব্রেরি: apis.google.com/js/platform.js এবং জাভাস্ক্রিপ্টের জন্য গুগল এপিআই ক্লায়েন্ট লাইব্রেরি : gapi.client আর প্রয়োজন নেই। এগুলোর পরিবর্তে একটি নতুন গুগল আইডেন্টিটি সার্ভিসেস জাভাস্ক্রিপ্ট লাইব্রেরি: accounts.google.com/gsi/client ব্যবহার করা হয়েছে।
সাইন-ইন করার জন্য ব্যবহৃত আগের তিনটি জাভাস্ক্রিপ্ট মডিউল— api , client , এবং platform সবগুলোই apis.google.com থেকে লোড করা হয়। আপনার সাইটে আগের লাইব্রেরিটি কোথায় অন্তর্ভুক্ত থাকতে পারে তা শনাক্ত করতে, সাধারণত:
- ডিফল্ট সাইন-ইন বাটনটি
apis.google.com/js/platform.jsলোড করে। - একটি কাস্টম বাটন গ্রাফিক
apis.google.com/js/api:client.jsলোড করে, এবং -
gapi.clientএর সরাসরি ব্যবহারেapis.google.com/js/api.jsলোড হয়।
বেশিরভাগ ক্ষেত্রে আপনি আপনার বিদ্যমান ওয়েব অ্যাপ্লিকেশন ক্লায়েন্ট আইডি ক্রেডেনশিয়াল ব্যবহার করা চালিয়ে যেতে পারেন। আপনার মাইগ্রেশনের অংশ হিসেবে আমরা সুপারিশ করি যে আপনি আমাদের OAuth 2.0 পলিসিগুলো পর্যালোচনা করুন এবং Google API কনসোল ব্যবহার করে নিম্নলিখিত ক্লায়েন্ট সেটিংসগুলো নিশ্চিত করুন এবং প্রয়োজনে আপডেট করুন:
- আপনার টেস্ট এবং প্রোডাকশন অ্যাপগুলো আলাদা প্রজেক্ট ব্যবহার করে এবং তাদের নিজস্ব ক্লায়েন্ট আইডি রয়েছে।
- OAuth 2.0 ক্লায়েন্ট আইডি টাইপটি হলো "ওয়েব অ্যাপ্লিকেশন", এবং
- অনুমোদিত জাভাস্ক্রিপ্ট অরিজিন এবং রিডাইরেক্ট ইউআরআই-এর জন্য HTTPS ব্যবহৃত হয়।
প্রভাবিত কোড শনাক্ত করুন এবং পরীক্ষা করুন
একটি ডিবাগ কুকি প্রভাবিত কোড সনাক্ত করতে এবং অপ্রচলিত হওয়ার পরবর্তী আচরণ পরীক্ষা করতে সাহায্য করতে পারে।
বড় বা জটিল অ্যাপে, gapi.auth2 মডিউলটি বাতিল হওয়ার কারণে প্রভাবিত সমস্ত কোড খুঁজে পাওয়া কঠিন হতে পারে। শীঘ্রই বাতিল হতে চলা সক্ষমতাগুলোর বর্তমান ব্যবহার কনসোলে লগ করার জন্য, G_AUTH2_MIGRATION কুকির মান informational এ সেট করুন। ঐচ্ছিকভাবে, সেশন স্টোরেজেও লগ করার জন্য একটি কোলনের পরে একটি কী ভ্যালু যোগ করুন। সাইন-ইন এবং ক্রেডেনশিয়াল প্রাপ্তির পরে, পরবর্তী বিশ্লেষণের জন্য সংগৃহীত লগগুলো পর্যালোচনা করুন বা একটি ব্যাকএন্ডে পাঠান। উদাহরণস্বরূপ, informational:showauth2use showauth2use নামের একটি সেশন স্টোরেজ কী-তে অরিজিন এবং ইউআরএল সংরক্ষণ করে।
gapi.auth2 মডিউলটি আর লোড না হলে অ্যাপের আচরণ যাচাই করতে, G_AUTH2_MIGRATION কুকিটির মান ' enforced এ সেট করুন। এটি এনফোর্সমেন্ট তারিখের আগেই ডেপ্রিকেশন-পরবর্তী আচরণ পরীক্ষা করার সুযোগ দেয়।
G_AUTH2_MIGRATION কুকির সম্ভাব্য মানসমূহ:
-
gapi.auth2মডিউল লোড করাenforcedনয়। - অপ্রচলিত ক্ষমতা ব্যবহারের
informationalলগ JS কনসোলে প্রদর্শন করুন। এছাড়াও, যখন একটি ঐচ্ছিক কী-নেম (informational:key-name) সেট করা হয়, তখন সেশন স্টোরেজেও লগ করুন।
ব্যবহারকারীর উপর প্রভাব কমাতে, প্রোডাকশন পরিবেশে ব্যবহার করার আগে ডেভেলপমেন্ট এবং টেস্ট পর্যায়ে এই কুকিটি প্রথমে স্থানীয়ভাবে সেট করার পরামর্শ দেওয়া হচ্ছে।
এইচটিএমএল এবং জাভাস্ক্রিপ্ট
এই শুধুমাত্র-প্রমাণীকরণ সাইন-ইন পরিস্থিতিতে, উদাহরণ কোড এবং বিদ্যমান গুগল সাইন-ইন বাটনের রেন্ডারিং দেখানো হয়েছে। প্রমাণীকরণ প্রতিক্রিয়াটি কীভাবে একটি জাভাস্ক্রিপ্ট কলব্যাকের মাধ্যমে অথবা আপনার ব্যাকএন্ড সার্ভারের লগইন এন্ডপয়েন্টে সুরক্ষিত রিডাইরেক্টের মাধ্যমে পরিচালনা করা হয়, তার পার্থক্যগুলো দেখতে পপআপ বা রিডাইরেক্ট মোড থেকে নির্বাচন করুন।
আগের পদ্ধতি
পপআপ মোড
গুগল সাইন-ইন বাটনটি রেন্ডার করুন এবং ব্যবহারকারীর ব্রাউজার থেকে সরাসরি সাইন-ইন পরিচালনা করার জন্য একটি কলব্যাক ব্যবহার করুন।
<html>
<body>
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
<div class="g-signin2" data-onsuccess="handleCredentialResponse"></div>
</body>
</html>
পুনঃনির্দেশ মোড
গুগল সাইন-ইন বাটনটি রেন্ডার করুন এবং সবশেষে ব্যবহারকারীর ব্রাউজার থেকে আপনার ব্যাকএন্ড সার্ভারের লগইন এন্ডপয়েন্টে একটি AJAX কল পাঠান।
<html>
<body>
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
<div class="g-signin2" data-onsuccess="handleCredentialResponse"></div>
<script>
function handleCredentialResponse(googleUser) {
...
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://yourbackend.example.com/tokensignin');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function() {
console.log('Signed in as: ' + xhr.responseText);
};
xhr.send('idtoken=' + id_token);
}
</script>
</body>
</html>
রেন্ডার করা হয়েছে
নতুন ভিজ্যুয়াল-অ্যাট্রিবিউটগুলো কাস্টমাইজড বাটন তৈরির আগের পদ্ধতিকে সহজ করে, gapi.signin2.render() কল করার প্রয়োজনীয়তা দূর করে এবং আপনার সাইটে ছবি ও ভিজ্যুয়াল অ্যাসেট হোস্ট ও রক্ষণাবেক্ষণ করার দরকারও দূর করে।


ব্যবহারকারীর সাইন-ইন স্ট্যাটাস আপডেট বাটনের টেক্সট।
নতুন উপায়
শুধুমাত্র প্রমাণীকরণ-ভিত্তিক সাইন-ইন ক্ষেত্রে নতুন লাইব্রেরিটি ব্যবহার করতে, পপআপ অথবা রিডাইরেক্ট মোড থেকে যেকোনো একটি নির্বাচন করুন এবং আপনার লগইন পেজে বিদ্যমান ইমপ্লিমেন্টেশনটি প্রতিস্থাপন করতে কোড স্যাম্পলটি ব্যবহার করুন।
পপআপ মোড
ব্যবহারকারীর ব্রাউজার থেকে সরাসরি সাইন-ইন পরিচালনা করতে একটি কলব্যাক ব্যবহার করুন।
<html>
<body>
<script src="https://accounts.google.com/gsi/client" async defer></script>
<div id="g_id_onload"
data-client_id="YOUR_CLIENT_ID"
data-callback="handleCredentialResponse">
</div>
<div class="g_id_signin" data-type="standard"></div>
</body>
</html>
পুনঃনির্দেশ মোড
Google, data-login_url অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা আপনার লগইন এন্ডপয়েন্টকে কল করে। পূর্বে, POST অপারেশন এবং প্যারামিটারের নাম নির্ধারণের দায়িত্ব আপনার ছিল। নতুন লাইব্রেরিটি credential প্যারামিটারে আপনার এন্ডপয়েন্টে আইডি টোকেনটি পোস্ট করে। সবশেষে, আপনার ব্যাকএন্ড সার্ভারে আইডি টোকেনটি যাচাই করুন ।
<html>
<body>
<script src="https://accounts.google.com/gsi/client" async defer></script>
<div id="g_id_onload"
data-client_id="YOUR_CLIENT_ID"
data-ux_mode="redirect"
data-login_uri="https://www.example.com/your_login_endpoint">
</div>
<div class="g_id_signin" data-type="standard"></div>
</body>
</html>
রেন্ডার করা হয়েছে
‘সাইন ইন উইথ গুগল’ বাটনের আকার, আকৃতি ও রঙ কাস্টমাইজ করতে ভিজ্যুয়াল অ্যাট্রিবিউট ব্যবহার করুন। সাইন-ইন হার বাড়াতে ব্যক্তিগতকৃত বাটনের সাথে ওয়ান ট্যাপ পপআপটি প্রদর্শন করুন।


ব্যবহারকারীর সাইন-ইন অবস্থা বাটনের লেখাকে "সাইন ইন" থেকে "সাইনড ইন"-এ পরিবর্তন করে না। সম্মতি প্রদানের পর, অথবা পরবর্তী ভিজিটে, ব্যক্তিগতকৃত বাটনটিতে ব্যবহারকারীর নাম, ইমেল এবং প্রোফাইল ছবি অন্তর্ভুক্ত থাকে।
এই শুধুমাত্র-প্রমাণীকরণ উদাহরণে, নতুন accounts.google.com/gsi/client লাইব্রেরি, g_id_signin ক্লাস এবং g_id_onload অবজেক্ট পূর্ববর্তী apis.google.com/js/platform.js লাইব্রেরি এবং g-signin2 অবজেক্টকে প্রতিস্থাপন করে।
নতুন পার্সোনালাইজড বাটনটি রেন্ডার করার পাশাপাশি উদাহরণ কোডটি নতুন ওয়ান ট্যাপ পপআপটিও প্রদর্শন করে। আপনি যেখানেই পার্সোনালাইজড বাটনটি প্রদর্শন করুন না কেন, আমরা দৃঢ়ভাবে সুপারিশ করি যে আপনি ওয়ান ট্যাপ পপআপটিও প্রদর্শন করুন, যাতে সাইন-আপ এবং সাইন-ইন করার সময় ব্যবহারকারীর অসুবিধা কমানো যায়।
যদিও সাইন-ইন প্রক্রিয়া জটিল হওয়ার কারণে এটি সুপারিশ করা হয় না, তবুও ওয়ান ট্যাপ ডায়ালগটি একই সাথে প্রদর্শন না করেও নতুন ব্যক্তিগতকৃত বাটনটি একা দেখানো যেতে পারে। এটি করার জন্য, data-auto_prompt অ্যাট্রিবিউটটির মান false সেট করুন।
এইচটিএমএল এবং জাভাস্ক্রিপ্ট এপিআই
পূর্ববর্তী উদাহরণটি দেখায় কিভাবে নতুন HTML API ব্যবহার করে আপনার ওয়েবসাইটে সাইন-ইন যুক্ত করা যায়। বিকল্পভাবে, আপনি কার্যকারিতার দিক থেকে সমতুল্য JavaScript API ব্যবহার করতে পারেন, অথবা আপনার সাইট জুড়ে HTML এবং JavaScript API-এর মিশ্রণ ঘটাতে পারেন।
বাটনের কাস্টমাইজেশন অপশনগুলো, যেমন—কলব্যাক টাইপ এবং অ্যাট্রিবিউট (যেমন: রঙ, আকার, আকৃতি, টেক্সট ও থিম) ইন্টারেক্টিভভাবে দেখতে আমাদের কোড জেনারেটরটি দেখুন। এটি ব্যবহার করে দ্রুত বিভিন্ন অপশনের তুলনা করা যায় এবং আপনার সাইটে ব্যবহারের জন্য HTML স্নিপেট তৈরি করা যায়।
যেকোনো পৃষ্ঠা থেকে এক ট্যাপে সাইন-ইন করুন
ওয়ান ট্যাপ হলো ব্যবহারকারীদের জন্য আপনার সাইটে সাইন-আপ বা সাইন-ইন করার একটি নতুন ও সহজ উপায়। এটি আপনাকে আপনার সাইটের যেকোনো পেজ থেকে সরাসরি ব্যবহারকারীদের সাইন-ইন করার সুযোগ দেয় এবং ব্যবহারকারীদের জন্য একটি নির্দিষ্ট লগইন পেজে যাওয়ার প্রয়োজনীয়তা দূর করে। অন্যভাবে বললে, এটি ব্যবহারকারীদের আপনার লগইন পেজ ছাড়াও অন্যান্য পেজ থেকে সাইন-আপ এবং সাইন-ইন করার সুবিধা দিয়ে সাইন-আপ ও সাইন-ইনের জটিলতা কমিয়ে দেয়।
যেকোনো পৃষ্ঠা থেকে সাইন-ইন সক্ষম করতে, আমরা সুপারিশ করি যে আপনি আপনার সম্পূর্ণ সাইট জুড়ে অন্তর্ভুক্ত একটি শেয়ার্ড হেডার, ফুটার বা অন্য কোনো অবজেক্টে g_id_onload অন্তর্ভুক্ত করুন।
আমরা g_id_signin যোগ করারও পরামর্শ দিই, যা ব্যক্তিগতকৃত সাইন-ইন বাটনটি শুধুমাত্র আপনার লগইন বা ব্যবহারকারী অ্যাকাউন্ট ব্যবস্থাপনা পেজগুলিতে প্রদর্শন করে। অন্যান্য ফেডারেটেড আইডেন্টিটি প্রোভাইডার বাটন এবং ইউজারনেম ও পাসওয়ার্ড এন্ট্রি ফিল্ডের পাশাপাশি বাটনটি প্রদর্শন করে ব্যবহারকারীদের সাইন-আপ বা সাইন-ইন করার সুযোগ দিন।
নামমাত্র প্রতিক্রিয়া
ব্যবহারকারী সাইন-ইন করার জন্য এখন আর আপনাকে OAuth 2.0 অথরাইজেশন কোড, অ্যাক্সেস টোকেন বা রিফ্রেশ টোকেন বুঝতে বা ব্যবহার করতে হবে না। এর পরিবর্তে, সাইন-ইন স্ট্যাটাস এবং ব্যবহারকারীর প্রোফাইল শেয়ার করার জন্য একটি JSON Web Token (JWT) আইডি টোকেন ব্যবহার করা হয়। আরও সরলীকরণের জন্য, ব্যবহারকারীর প্রোফাইল ডেটা নিয়ে কাজ করতে এখন আর 'গেটার' স্টাইলের অ্যাক্সেসর মেথড ব্যবহার করার প্রয়োজন নেই।
একটি সুরক্ষিত গুগল-স্বাক্ষরিত JWT ID টোকেন ক্রেডেনশিয়াল ফেরত দেওয়া হয়, যা নিম্নরূপ:
- পপআপ মোডে ব্যবহারকারীর ব্রাউজার-ভিত্তিক জাভাস্ক্রিপ্ট কলব্যাক হ্যান্ডলারে, অথবা
- যখন 'Sign In With Google' বাটনের
ux_moderedirectএ সেট করা থাকে, তখন একটি গুগল রিডাইরেক্টের মাধ্যমে আপনার লগইন এন্ডপয়েন্টে আপনার ব্যাকএন্ড সার্ভারে রিডাইরেক্ট করা হয়।
উভয় ক্ষেত্রেই, আপনার বিদ্যমান কলব্যাক হ্যান্ডলারগুলি থেকে নিম্নলিখিতগুলি সরিয়ে আপডেট করুন:
-
googleUser.getBasicProfile()-এ কল, -
BasicProfileএর রেফারেন্স, এবং এর সাথে সম্পর্কিতgetId(),getName(),getGivenName(),getFamilyName(),getImageUrl(),getEmail()মেথডগুলোর কল, এবং -
AuthResponseঅবজেক্টের ব্যবহার।
এর পরিবর্তে, ব্যবহারকারীর প্রোফাইল ডেটা নিয়ে কাজ করার জন্য নতুন JWT CredentialResponse অবজেক্টে credential সাব-ফিল্ডগুলির সরাসরি রেফারেন্স ব্যবহার করুন।
এছাড়াও, এবং শুধুমাত্র রিডাইরেক্ট মোডের জন্য, আপনার ব্যাকএন্ড সার্ভারে ক্রস-সাইট রিকোয়েস্ট ফরজেরি (CSRF) প্রতিরোধ করুন এবং গুগল আইডি টোকেনটি যাচাই করুন ।
ব্যবহারকারীরা আপনার সাইটের সাথে কীভাবে ইন্টারঅ্যাক্ট করছে তা আরও ভালোভাবে বোঝার জন্য, ব্যবহারকারীর সম্মতির ফলাফল এবং ব্যবহৃত নির্দিষ্ট সাইন-ইন ফ্লো নির্ধারণ করতে CredentialResponse-এর select_by ফিল্ডটি ব্যবহার করা যেতে পারে।
ব্যবহারকারীর সম্মতি এবং অনুমতি প্রত্যাহার
যখন কোনো ব্যবহারকারী প্রথমবার আপনার ওয়েবসাইটে সাইন-ইন করেন, তখন গুগল আপনার অ্যাপের সাথে তাদের অ্যাকাউন্ট প্রোফাইল শেয়ার করার জন্য অনুমতি চায়। শুধুমাত্র অনুমতি দেওয়ার পরেই ব্যবহারকারীর প্রোফাইলটি একটি আইডি টোকেন ক্রেডেনশিয়াল পেলোডের মাধ্যমে আপনার অ্যাপে শেয়ার করা হয়। এই প্রোফাইলের অ্যাক্সেস প্রত্যাহার করা পূর্ববর্তী সাইন-ইন লাইব্রেরিতে একটি অ্যাক্সেস টোকেন প্রত্যাহার করার সমতুল্য।
ব্যবহারকারীরা https://myaccount.google.com/permissions -এ গিয়ে অনুমতি প্রত্যাহার করতে এবং তাদের গুগল অ্যাকাউন্ট থেকে আপনার অ্যাপটি সংযোগ বিচ্ছিন্ন করতে পারেন। বিকল্পভাবে, তারা আপনার প্রয়োগ করা একটি এপিআই (API) কল ট্রিগার করার মাধ্যমে সরাসরি আপনার অ্যাপ থেকে সংযোগ বিচ্ছিন্ন করতে পারেন; পূর্ববর্তী disconnect পদ্ধতিটি নতুন revoke ) পদ্ধতি দ্বারা প্রতিস্থাপিত হয়েছে।
যখন কোনো ব্যবহারকারী আপনার প্ল্যাটফর্ম থেকে তার অ্যাকাউন্ট মুছে ফেলেন, তখন revoke ব্যবহার করে তার গুগল অ্যাকাউন্ট থেকে আপনার অ্যাপটির সংযোগ বিচ্ছিন্ন করাই উত্তম পন্থা।
পূর্বে, আপনার অ্যাপ থেকে ব্যবহারকারীর সাইন-আউট পরিচালনা করতে auth2.signOut() ব্যবহার করা যেত। auth2.signOut() এর যেকোনো ব্যবহার বন্ধ করা উচিত এবং আপনার অ্যাপ সরাসরি প্রতিটি ব্যবহারকারীর সেশন স্টেট ও সাইন-ইন স্ট্যাটাস পরিচালনা করবে।
সেশনের অবস্থা এবং শ্রোতারা
নতুন লাইব্রেরিটি আপনার ওয়েব অ্যাপের সাইন-ইন স্ট্যাটাস বা সেশন স্টেট সংরক্ষণ করে না।
একটি গুগল অ্যাকাউন্টের সাইন-ইন করা অবস্থা এবং আপনার অ্যাপের সেশন অবস্থা ও সাইন-ইন করা অবস্থা হলো স্বতন্ত্র ও পৃথক ধারণা।
ব্যবহারকারীর গুগল অ্যাকাউন্টে এবং আপনার অ্যাপে সাইন-ইন করার অবস্থা একে অপরের থেকে স্বাধীন, শুধুমাত্র সাইন-ইন করার মুহূর্তটি ছাড়া, যখন আপনি জানতে পারেন যে ব্যবহারকারী সফলভাবে প্রমাণীকরণ সম্পন্ন করেছেন এবং তার গুগল অ্যাকাউন্টে সাইন ইন করেছেন।
যখন আপনার সাইটে 'সাইন ইন উইথ গুগল', 'ওয়ান ট্যাপ' বা 'অটোমেটিক সাইন-ইন' অন্তর্ভুক্ত থাকে, তখন ব্যবহারকারীদের প্রথমে তাদের গুগল অ্যাকাউন্টে সাইন-ইন করতে হবে:
- আপনার সাইটে প্রথমবার সাইন-আপ বা সাইন-ইন করার সময় তাদের ব্যবহারকারী প্রোফাইল শেয়ার করার জন্য সম্মতি প্রদান করুন,
- এবং পরবর্তীতে আপনার সাইটে পুনরায় পরিদর্শনের সময় সাইন-ইন করার জন্য।
ব্যবহারকারীরা আপনার ওয়েবসাইটে একটি সক্রিয়, সাইন-ইন করা সেশন বজায় রেখে সাইন-ইন থাকতে, সাইন-আউট করতে বা অন্য একটি গুগল অ্যাকাউন্টে যেতে পারেন।
এখন আপনি আপনার ওয়েব অ্যাপের ব্যবহারকারীদের সাইন-ইন করা অবস্থা সরাসরি পরিচালনা করার দায়িত্বে আছেন। পূর্বে, গুগল সাইন-ইন ব্যবহারকারীর সেশন অবস্থা নিরীক্ষণে সহায়তা করত।
auth2.attachClickHandler() এবং এর নিবন্ধিত কলব্যাক হ্যান্ডলারগুলোর সমস্ত উল্লেখ মুছে ফেলুন।
পূর্বে, কোনো ব্যবহারকারীর গুগল অ্যাকাউন্টের সাইন-ইন করা অবস্থার পরিবর্তন শেয়ার করার জন্য লিসেনার ব্যবহার করা হতো। লিসেনার এখন আর সমর্থিত নয়।
listen() , auth2.currentUser , এবং auth2.isSignedIn এর যেকোনো উল্লেখ মুছে ফেলুন।
কুকি
সাইন ইন উইথ গুগল সীমিত পরিমাণে কুকি ব্যবহার করে, এই কুকিগুলোর একটি বিবরণ নিচে দেওয়া হলো। গুগলের ব্যবহৃত অন্যান্য ধরনের কুকি সম্পর্কে আরও তথ্যের জন্য ‘গুগল কীভাবে কুকি ব্যবহার করে’ দেখুন।
পূর্ববর্তী গুগল সাইন-ইন প্ল্যাটফর্ম লাইব্রেরি দ্বারা সেট করা G_ENABLED_IDPS কুকিটি এখন আর ব্যবহৃত হয় না।
নতুন গুগল আইডেন্টিটি সার্ভিসেস লাইব্রেরি আপনার কনফিগারেশন বিকল্পগুলির উপর ভিত্তি করে ঐচ্ছিকভাবে এই ক্রস-ডোমেইন কুকিগুলি সেট করতে পারে:
-
g_stateব্যবহারকারীর সাইন-আউট স্ট্যাটাস সংরক্ষণ করে এবং ওয়ান ট্যাপ পপ-আপ বা অটোমেটিক সাইন-ইন ব্যবহার করার সময় এটি সেট করা হয়। g_csrf_tokenহলো একটি ডাবল-সাবমিট কুকি যা CSRF আক্রমণ প্রতিরোধ করতে ব্যবহৃত হয় এবং আপনার লগইন এন্ডপয়েন্ট কল করা হলে এটি সেট করা হয়। আপনার লগইন URI-এর মান স্পষ্টভাবে সেট করা যেতে পারে অথবা এটি ডিফল্টভাবে বর্তমান পৃষ্ঠার URI ব্যবহার করতে পারে। নিম্নলিখিত শর্তগুলো ব্যবহার করার সময় আপনার লগইন এন্ডপয়েন্ট কল করা হতে পারে:data-ux_mode=redirectসহ অথবা যখনdata-login_uriসেট করা থাকে, অথবাজাভাস্ক্রিপ্ট এপিআই যেখানে
ux_mode=redirectএবং ওয়ান ট্যাপ বা অটোমেটিক সাইন-ইন দেখানোর জন্যgoogle.accounts.id.prompt()ব্যবহার করা হয় না।
আপনার যদি কুকি পরিচালনা করার কোনো পরিষেবা থাকে, তাহলে মাইগ্রেশন সম্পন্ন হলে নতুন দুটি কুকি যোগ করতে এবং আগের কুকিটি মুছে ফেলতে ভুলবেন না।
আপনি যদি একাধিক ডোমেইন বা সাবডোমেইন পরিচালনা করেন, তাহলে g_state কুকি নিয়ে কাজ করার বিষয়ে আরও নির্দেশাবলীর জন্য ‘সাবডোমেইন জুড়ে ওয়ান ট্যাপ প্রদর্শন’ দেখুন।
ব্যবহারকারী সাইন-ইন এর জন্য অবজেক্ট মাইগ্রেশন রেফারেন্স
| পুরানো | নতুন | নোট |
|---|---|---|
| জাভাস্ক্রিপ্ট লাইব্রেরি | ||
| apis.google.com/js/platform.js | accounts.google.com/gsi/client | পুরানোটির বদলে নতুনটি লাগান। |
| apis.google.com/js/api.js | accounts.google.com/gsi/client | পুরানোটির বদলে নতুনটি লাগান। |
| GoogleAuth অবজেক্ট এবং এর সংশ্লিষ্ট মেথডসমূহ: | ||
| GoogleAuth.attachClickHandler() | JS এবং HTML ডেটা-কলব্যাকের জন্য IdConfiguration.callback | পুরানোটির বদলে নতুনটি লাগান। |
| GoogleAuth.currentUser.get() | ক্রেডেনশিয়ালরেসপন্স | এর পরিবর্তে CredentialResponse ব্যবহার করুন, এটির আর প্রয়োজন নেই। |
| GoogleAuth.currentUser.listen() | অপসারণ করুন। গুগলে একজন ব্যবহারকারীর বর্তমান সাইন-ইন স্ট্যাটাস অনুপলব্ধ। সম্মতি এবং সাইন-ইন মুহূর্তের জন্য ব্যবহারকারীদের অবশ্যই গুগলে সাইন-ইন করা থাকতে হবে। ব্যবহৃত সাইন-ইন পদ্ধতির পাশাপাশি ব্যবহারকারীর সম্মতির ফলাফল নির্ধারণ করতে CredentialResponse-এর select_by ফিল্ডটি ব্যবহার করা যেতে পারে। | |
| GoogleAuth.disconnect() | google.accounts.id.revoke | পুরানোটির পরিবর্তে নতুনটি প্রতিস্থাপন করুন। https://myaccount.google.com/permissions থেকেও প্রত্যাহার করা যেতে পারে। |
| GoogleAuth.grantOfflineAccess() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| GoogleAuth.isSignedIn.get() | মুছে ফেলুন। গুগলে একজন ব্যবহারকারীর বর্তমান সাইন-ইন অবস্থা অনুপলব্ধ। সম্মতি এবং সাইন-ইন করার জন্য ব্যবহারকারীদের অবশ্যই গুগলে সাইন-ইন করা থাকতে হবে। | |
| GoogleAuth.isSignedIn.listen() | মুছে ফেলুন। গুগলে একজন ব্যবহারকারীর বর্তমান সাইন-ইন অবস্থা অনুপলব্ধ। সম্মতি এবং সাইন-ইন করার জন্য ব্যবহারকারীদের অবশ্যই গুগলে সাইন-ইন করা থাকতে হবে। | |
| GoogleAuth.signIn() | অপসারণ করুন। g_id_signin এলিমেন্টের HTML DOM লোডিং অথবা google.accounts.id.renderButton- এ JS কল ব্যবহারকারীকে একটি গুগল অ্যাকাউন্টে সাইন-ইন করতে ট্রিগার করে। | |
| GoogleAuth.signOut() | মুছে ফেলুন। আপনার অ্যাপ এবং একটি গুগল অ্যাকাউন্টের জন্য ব্যবহারকারীর সাইন-ইন স্ট্যাটাস দুটি স্বাধীন বিষয়। গুগল আপনার অ্যাপের সেশন স্টেট পরিচালনা করে না। | |
| GoogleAuth.then() | মুছে ফেলুন। GoogleAuth অপ্রচলিত। | |
| GoogleUser অবজেক্ট এবং এর সংশ্লিষ্ট মেথডসমূহ: | ||
| GoogleUser.disconnect() | google.accounts.id.revoke | পুরানোটির পরিবর্তে নতুনটি প্রতিস্থাপন করুন। https://myaccount.google.com/permissions থেকেও প্রত্যাহার করা যেতে পারে। |
| GoogleUser.getAuthResponse() | ||
| GoogleUser.getBasicProfile() | ক্রেডেনশিয়ালরেসপন্স | BasicProfile মেথডগুলোর পরিবর্তে সরাসরি credential এবং সাব-ফিল্ড ব্যবহার করুন। |
| GoogleUser.getGrantedScopes() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| GoogleUser.getHostedDomain() | ক্রেডেনশিয়ালরেসপন্স | এর পরিবর্তে সরাসরি credential.hd ব্যবহার করুন। |
| GoogleUser.getId() | ক্রেডেনশিয়ালরেসপন্স | এর পরিবর্তে সরাসরি credential.sub ব্যবহার করুন। |
| GoogleUser.grantOfflineAccess() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| GoogleUser.grant() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| GoogleUser.hasGrantedScopes() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| GoogleUser.isSignedIn() | মুছে ফেলুন। গুগলে একজন ব্যবহারকারীর বর্তমান সাইন-ইন অবস্থা অনুপলব্ধ। সম্মতি এবং সাইন-ইন করার জন্য ব্যবহারকারীদের অবশ্যই গুগলে সাইন-ইন করা থাকতে হবে। | |
| GoogleUser.reloadAuthResponse() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.auth2 অবজেক্ট এবং এর সাথে সম্পর্কিত মেথডসমূহ: | ||
| gapi.auth2.AuthorizeConfig অবজেক্ট | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.auth2.AuthorizeResponse অবজেক্ট | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.auth2.AuthResponse অবজেক্ট | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.auth2.authorize() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.auth2.ClientConfig() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.auth2.getAuthInstance() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.auth2.init() | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.auth2.OfflineAccessOptions অবজেক্ট | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.auth2.SignInOptions অবজেক্ট | অপসারণ করা হয়েছে। OAuth 2.0 অ্যাক্সেস টোকেন এবং স্কোপের পরিবর্তে একটি আইডি টোকেন ব্যবহার করা হচ্ছে। | |
| gapi.signin2 অবজেক্ট এবং এর সাথে সম্পর্কিত মেথডসমূহ: | ||
| gapi.signin2.render() | অপসারণ করুন। g_id_signin এলিমেন্টের HTML DOM লোডিং অথবা google.accounts.id.renderButton- এ JS কল ব্যবহারকারীকে একটি গুগল অ্যাকাউন্টে সাইন-ইন করতে ট্রিগার করে। | |