আপনার অ্যাপ্লিকেশন থেকে বিজনেস প্রোফাইল এপিআই-তে পাঠানো প্রতিটি অনুরোধে অবশ্যই একটি অথরাইজেশন টোকেন অন্তর্ভুক্ত থাকতে হবে। এই অথরাইজেশন টোকেনটি গুগল-এর কাছে ব্যবহারকারী বা অ্যাপ্লিকেশনটিকে শনাক্ত করে, যা বিজনেস প্রোফাইল এপিআই-তে অ্যাক্সেসের অনুমতি দেয়। অনুরোধ অনুমোদন করার জন্য আপনার অ্যাপ্লিকেশনকে অবশ্যই OAuth 2.0 প্রোটোকল ব্যবহার করতে হবে।
এই নির্দেশিকাটি আপনার প্ল্যাটফর্মে OAuth 2.0 প্রয়োগ করার জন্য ব্যবহারযোগ্য বিভিন্ন পদ্ধতি ব্যাখ্যা করে। এই নির্দেশিকা জুড়ে ব্যবহৃত গুগল সাইন-ইন এবং OAuth কার্যকারিতা গুগল আইডেন্টিটি প্ল্যাটফর্ম সরবরাহ করে।
ওয়েব সার্ভার অ্যাপ্লিকেশনে কীভাবে Oauth 2.0 ব্যবহার করতে হয়, তা আরও ভালোভাবে বোঝার জন্য অনুগ্রহ করে এখানের নির্দেশিকাটি দেখুন।
OAuth 2.0 বাস্তবায়নের ফলে নিম্নলিখিত সুবিধাগুলো পাওয়া যায়:
- ব্যবসায়িক মালিকের ডেটাতে প্রবেশাধিকার সুরক্ষিত রাখে।
- ব্যবসার মালিক যখন তাঁর গুগল অ্যাকাউন্টে সাইন ইন করেন, তখন তাঁর পরিচয় নিশ্চিত হয়।
- এটি প্রতিষ্ঠা করে যে, কোনো অংশীদার প্ল্যাটফর্ম বা অ্যাপ্লিকেশন ব্যবসার মালিকের সুস্পষ্ট সম্মতি সাপেক্ষে অবস্থানের ডেটা অ্যাক্সেস এবং পরিবর্তন করতে পারবে। মালিক পরবর্তীতে এই অ্যাক্সেস প্রত্যাহার করতে পারেন।
- অংশীদার প্ল্যাটফর্মের পরিচয় প্রতিষ্ঠা করে।
- এটি অংশীদার প্ল্যাটফর্মগুলোকে ব্যবসার মালিকের পক্ষ থেকে অনলাইন বা অফলাইন কার্যক্রম সম্পাদন করতে সক্ষম করে। এর মধ্যে রয়েছে পর্যালোচনার উত্তর দেওয়া, পোস্ট তৈরি করা এবং মেনু আইটেম আপডেট করা।
OAuth 2.0 ব্যবহার করে এপিআই অ্যাক্সেস
শুরু করার আগে, আপনাকে আপনার গুগল ক্লাউড প্রজেক্ট কনফিগার করতে হবে এবং বিজনেস প্রোফাইল এপিআইগুলো সক্রিয় করতে হবে। আরও তথ্যের জন্য, বেসিক সেটআপ -এর ডকুমেন্টেশন দেখুন।
OAuth এবং সম্মতি স্ক্রিন কনফিগার করুন
ক্রেডেনশিয়াল এবং কনসেন্ট স্ক্রিন তৈরি করতে এই ধাপগুলো অনুসরণ করুন:
- API কনসোলের ক্রেডেনশিয়ালস পৃষ্ঠা থেকে, 'Create credentials'-এ ক্লিক করুন এবং ড্রপ-ডাউন তালিকা থেকে "OAuth Client ID" নির্বাচন করুন।
- আপনার আবেদনের ধরন নির্বাচন করুন, প্রাসঙ্গিক তথ্য পূরণ করুন এবং 'তৈরি করুন ' বোতামে ক্লিক করুন।
- সংরক্ষণ করুন- এ ক্লিক করুন।
- OAuth সম্মতি স্ক্রিনের সেটিংস আপডেট করুন। সেখান থেকে আপনি অ্যাপ্লিকেশনের নাম ও লোগো আপডেট করতে পারবেন, সেইসাথে আপনার পরিষেবার শর্তাবলী এবং গোপনীয়তা নীতির লিঙ্কও যুক্ত করতে পারবেন।
নিম্নলিখিত চিত্রটিতে OAuth সম্মতি স্ক্রিনে অ্যাপ্লিকেশন নাম এবং লোগো ক্ষেত্রগুলি দেখানো হয়েছে:

নিম্নলিখিত চিত্রটিতে OAuth সম্মতি স্ক্রিনে প্রদর্শিত অতিরিক্ত ক্ষেত্রগুলি দেখানো হয়েছে:

ব্যবহারকারী সম্মতি দেওয়ার আগে যা দেখতে পারেন, নিচের ছবিটি তার একটি উদাহরণ:

OAuth 2.0 অন্তর্ভুক্ত করার পদ্ধতি
OAuth 2.0 বাস্তবায়ন করতে আপনি নিম্নলিখিত পদ্ধতিগুলো ব্যবহার করতে পারেন:
নিম্নলিখিত বিষয়বস্তুতে আপনার অ্যাপ্লিকেশনে OAuth 2.0 অন্তর্ভুক্ত করার পদ্ধতিগুলো সম্পর্কে তথ্য দেওয়া হয়েছে।
অনুমোদনের পরিধি
নিম্নলিখিত OAuth স্কোপগুলির মধ্যে একটি প্রয়োজন:
- https://www.googleapis.com/auth/business.manage
- https://www.googleapis.com/auth/plus.business.manage
plus.business.manage স্কোপটি অপ্রচলিত ঘোষণা করা হয়েছে এবং বিদ্যমান ইমপ্লিমেন্টেশনগুলোর সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি বজায় রাখার জন্য এটি উপলব্ধ রয়েছে।
ক্লায়েন্ট লাইব্রেরি
এই পৃষ্ঠার ভাষা-নির্দিষ্ট উদাহরণগুলিতে OAuth 2.0 অনুমোদন বাস্তবায়নের জন্য গুগল এপিআই ক্লায়েন্ট লাইব্রেরি ব্যবহার করা হয়েছে। কোড নমুনাগুলি চালানোর জন্য, আপনাকে প্রথমে আপনার ভাষার জন্য ক্লায়েন্ট লাইব্রেরিটি ইনস্টল করতে হবে।
নিম্নলিখিত ভাষাগুলোর জন্য ক্লায়েন্ট লাইব্রেরিগুলো উপলব্ধ আছে:
গুগল সাইন-ইন
আপনার প্ল্যাটফর্মে OAuth সংহত করার দ্রুততম উপায় হলো গুগল সাইন-ইন । এটি অ্যান্ড্রয়েড, আইওএস, ওয়েব এবং আরও অনেক কিছুর জন্য উপলব্ধ।
গুগল সাইন-ইন একটি সুরক্ষিত প্রমাণীকরণ ব্যবস্থা যা ব্যবহারকারীদের তাদের গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করতে সক্ষম করে; এই অ্যাকাউন্টটিই তারা অন্যান্য গুগল পরিষেবাগুলিতে সাইন ইন করার জন্য ব্যবহার করে থাকেন। একবার ব্যবহারকারী সাইন ইন করলে, তিনি আপনার অ্যাপ্লিকেশনকে বিজনেস প্রোফাইল এপিআই (Business Profile APIs) কল করার এবং রিফ্রেশ ও অ্যাক্সেস টোকেন পাওয়ার জন্য ব্যবহৃত অনুমোদন কোডটি আদান-প্রদান করার অনুমতি দিতে পারেন।
অফলাইন অ্যাক্সেস
ব্যবহারকারী অফলাইনে থাকলেও আপনি তার পক্ষ থেকে বিজনেস প্রোফাইল এপিআই কল করতে চাইতে পারেন। প্ল্যাটফর্মগুলোকে এই কার্যকারিতা অন্তর্ভুক্ত করার পরামর্শ দেওয়া হয়, কারণ ব্যবহারকারী সাইন ইন করে সম্মতি দেওয়ার পর আপনি যেকোনো সময় তালিকাগুলো সম্পাদনা, দেখা এবং পরিচালনা করতে পারবেন।
গুগল ধরে নেয় যে, ব্যবহারকারী ইতিমধ্যেই তার গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করেছেন, আপনার অ্যাপ্লিকেশনকে বিজনেস প্রোফাইল এপিআই (Business Profile APIs) কল করার জন্য সম্মতি দিয়েছেন এবং একটি অনুমোদন কোড আদান-প্রদান করেছেন, যা পরবর্তীতে একটি রিফ্রেশ টোকেন এবং তারপরে একটি অ্যাক্সেস টোকেন পেতে ব্যবহৃত হয়। ব্যবহারকারী রিফ্রেশ টোকেনটি নিরাপদে সংরক্ষণ করতে পারেন এবং পরে যেকোনো সময় একটি নতুন অ্যাক্সেস টোকেন পেতে এটি ব্যবহার করতে পারেন। আরও তথ্যের জন্য, সার্ভার-সাইড অ্যাপের জন্য গুগল সাইন-ইন (Google Sign-In for server-side apps) পড়ুন।
নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে আপনার অ্যাপ্লিকেশনে অফলাইন অ্যাক্সেস প্রয়োগ করতে হয়। এই কোডটি চালানোর জন্য, 'নমুনাটি চালান ' দেখুন।
<!-- The top of file index.html --> <html itemscope itemtype="http://schema.org/Article"> <head> <!-- BEGIN Pre-requisites --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"> </script> <script src="https://apis.google.com/js/client:platform.js?onload=start" async defer> </script> <!-- END Pre-requisites --> <!-- Continuing the <head> section --> <script> function start() { gapi.load('auth2', function() { auth2 = gapi.auth2.init({ client_id: 'YOUR_CLIENT_ID.apps.googleusercontent.com', // Scopes to request in addition to 'profile' and 'email' scope: 'https://www.googleapis.com/auth/business.manage', immediate: true }); }); } </script> </head> <body> <!-- Add where you want your sign-in button to render --> <!-- Use an image that follows the branding guidelines in a real app, more info here: https://developers.google.com/identity/branding-guidelines --> <h1>Business Profile Offline Access Demo</h1> <p> This demo demonstrates the use of Google Identity Services and OAuth to gain authorization to call the Business Profile APIs on behalf of the user, even when the user is offline. When a refresh token is acquired, store this token securely on your database. You will then be able to use this token to refresh the OAuth credentials and make offline API calls on behalf of the user. The user may revoke access at any time from the <a href='https://myaccount.google.com/permissions'>Account Settings</a> page. </p> <button id="signinButton">Sign in with Google</button><br> <input id="authorizationCode" type="text" placeholder="Authorization Code" style="width: 60%"><button id="accessTokenButton" disabled>Retrieve Access/Refresh Token</button><br> <input id="refreshToken" type="text" placeholder="Refresh Token, never expires unless revoked" style="width: 60%"><button id="refreshSubmit">Refresh Access Token</button><br> <input id="accessToken" type="text" placeholder="Access Token" style="width: 60%"><button id="gmbAccounts">Get Business Profile Accounts</button><br> <p>API Responses:</p> <script> //Will be populated after sign in. var authCode; $('#signinButton').click(function() { // signInCallback auth2.grantOfflineAccess().then(signInCallback); }); $('#accessTokenButton').click(function() { // signInCallback defined in step 6. retrieveAccessTokenAndRefreshToken(authCode); }); $('#refreshSubmit').click(function() { // signInCallback defined in step 6. retrieveAccessTokenFromRefreshToken($('#refreshToken').val()); }); $('#gmbAccounts').click(function() { // signInCallback defined in step 6. retrieveGoogleMyBusinessAccounts($('#accessToken').val()); }); function signInCallback(authResult) { //the 'code' field from the response, used to retrieve access token and bearer token if (authResult['code']) { // Hide the sign-in button now that the user is authorized, for example: $('#signinButton').attr('style', 'display: none'); authCode = authResult['code']; $("#accessTokenButton").attr( "disabled", false ); //Pretty print response var e = document.createElement("pre") e.innerHTML = JSON.stringify(authResult, undefined, 2); document.body.appendChild(e); //autofill authorization code input $('#authorizationCode').val(authResult['code']) } else { // There was an error. } } //WARNING: THIS FUNCTION IS DISPLAYED FOR DEMONSTRATION PURPOSES ONLY. YOUR CLIENT_SECRET SHOULD NEVER BE EXPOSED ON THE CLIENT SIDE!!!! function retrieveAccessTokenAndRefreshToken(code) { $.post('https://www.googleapis.com/oauth2/v4/token', { //the headers passed in the request 'code' : code, 'client_id' : 'YOUR_CLIENT_ID.apps.googleusercontent.com', 'client_secret' : 'YOUR_CLIENT_SECRET', 'redirect_uri' : 'http://localhost:8000', 'grant_type' : 'authorization_code' }, function(returnedData) { console.log(returnedData); //pretty print JSON response var e = document.createElement("pre") e.innerHTML = JSON.stringify(returnedData, undefined, 2); document.body.appendChild(e); $('#refreshToken').val(returnedData['refresh_token']) }); } //WARNING: THIS FUNCTION IS DISPLAYED FOR DEMONSTRATION PURPOSES ONLY. YOUR CLIENT_SECRET SHOULD NEVER BE EXPOSED ON THE CLIENT SIDE!!!! function retrieveAccessTokenFromRefreshToken(refreshToken) { $.post('https://www.googleapis.com/oauth2/v4/token', { // the headers passed in the request 'refresh_token' : refreshToken, 'client_id' : 'YOUR_CLIENT_ID.apps.googleusercontent.com', 'client_secret' : 'YOUR_CLIENT_SECRET', 'redirect_uri' : 'http://localhost:8000', 'grant_type' : 'refresh_token' }, function(returnedData) { var e = document.createElement("pre") e.innerHTML = JSON.stringify(returnedData, undefined, 2); document.body.appendChild(e); $('#accessToken').val(returnedData['access_token']) }); } function retrieveGoogleMyBusinessAccounts(accessToken) { $.ajax({ type: 'GET', url: 'https://mybusinessaccountmanagement.googleapis.com/v1/accounts', headers: { 'Authorization' : 'Bearer ' + accessToken }, success: function(returnedData) { var e = document.createElement("pre") e.innerHTML = JSON.stringify(returnedData, undefined, 2); document.body.appendChild(e); } }); } </script> </body> </html>
শুধুমাত্র অনলাইন অ্যাক্সেস
বাস্তবায়নের সুবিধার জন্য, ব্যবহারকারীর রিফ্রেশ টোকেন ক্যাশ না করেই বিজনেস প্রোফাইল এপিআই থেকে কল করা যেতে পারে। তবে, প্ল্যাটফর্মটি যাতে ব্যবহারকারী হিসেবে এপিআই কল করতে পারে, তার জন্য ব্যবহারকারীকে অবশ্যই সাইন ইন করা থাকতে হবে।
নিম্নলিখিত কোড স্নিপেটটি গুগল সাইন-ইন ফ্লো-এর বাস্তবায়ন এবং কীভাবে ব্যবহারকারী-নির্দিষ্ট এপিআই কল করতে হয় তা প্রদর্শন করে। ব্যবহারকারী তার গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করার পর এবং আপনার অ্যাপ্লিকেশনকে সম্মতি দিলে, একটি অ্যাক্সেস টোকেন প্রদান করা হয়। এই অ্যাক্সেস টোকেনটি ব্যবহারকারীকে শনাক্ত করে এবং বিজনেস প্রোফাইল এপিআই অনুরোধে হেডার হিসেবে এটি পাস করা আবশ্যক।
এই কোডটি চালানোর জন্য, 'নমুনাটি চালান' দেখুন।
<!-- The top of file index.html --> <html lang="en"> <head> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/business.manage"> <meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com"> <script src="https://apis.google.com/js/platform.js" async defer></script> </head> <body> <div class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div> <script> var gmb_api_version = 'https://mybusinessaccountmanagement.googleapis.com/v1'; function onSignIn(googleUser) { // Useful data for your client-side scripts: var profile = googleUser.getBasicProfile(); console.log('Full Name: ' + profile.getName()); console.log("Email: " + profile.getEmail()); var access_token = googleUser.getAuthResponse().access_token; //Using the sign in data to make a Business Profile APIs call var req = gmb_api_version + '/accounts'; var xhr = new XMLHttpRequest(); xhr.open('GET', req); xhr.setRequestHeader('Authorization', 'Bearer ' + access_token); //Displaying the API response xhr.onload = function () { document.body.appendChild(document.createTextNode(xhr.responseText)); } xhr.send(); } </script> </body> </html>
নমুনাটি চালান
প্রদত্ত নমুনা কোডটি চালানোর জন্য নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
- কোড স্নিপেটটি
index.htmlনামের একটি ফাইলে সেভ করুন। ফাইলটিতে আপনার ক্লায়েন্ট আইডি সেট করা আছে কিনা তা নিশ্চিত করুন। আপনার ওয়ার্কিং ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি ব্যবহার করে ওয়েব সার্ভারটি চালু করুন:
পাইথন ২.এক্স
python -m SimpleHTTPServer 8000
পাইথন ৩.এক্স
python -m http.server 8000
এপিআই কনসোলের ক্রেডেনশিয়ালস পৃষ্ঠা থেকে ব্যবহৃত ক্লায়েন্ট আইডিটি নির্বাচন করুন।
‘Authorized JavaScript origins’ ফিল্ডের অধীনে আপনার ওয়েবসাইটের URL লিখুন। এই গাইডের নমুনা কোডটি চালানোর জন্য, আপনাকে অবশ্যই
http://localhost:8000ও যোগ করতে হবে।আপনার ব্রাউজারে নিম্নলিখিত URL-টি লোড করুন:
http://localhost:8000/index.html
