আমরা ওয়েবের জন্য Google সাইন-ইন জাভাস্ক্রিপ্ট প্ল্যাটফর্ম লাইব্রেরি বন্ধ করে দিচ্ছি। 31শে মার্চ, 2023 অবচয় তারিখের পরে লাইব্রেরিটি ডাউনলোডের জন্য অনুপলব্ধ থাকবে। পরিবর্তে, ওয়েবের জন্য নতুন Google পরিচয় পরিষেবাগুলি ব্যবহার করুন৷
ডিফল্টরূপে, নতুন তৈরি করা ক্লায়েন্ট আইডিগুলি এখন পুরানো প্ল্যাটফর্ম লাইব্রেরি ব্যবহার করা থেকে ব্লক করা হয়েছে, বিদ্যমান ক্লায়েন্ট আইডিগুলি প্রভাবিত হয় না৷ 29শে জুলাই, 2022-এর আগে তৈরি করা নতুন ক্লায়েন্ট আইডিগুলি Google প্ল্যাটফর্ম লাইব্রেরির ব্যবহার সক্ষম করতে `plugin_name` সেট করতে পারে।

GoogleAuthUtil এবং Plus.API থেকে স্থানান্তর করুন

আপনি যদি অতীতে GoogleAuthUtil.getToken বা Plus.API ব্যবহার করে Google সাইন-ইন-এর সাথে একীভূত হয়ে থাকেন, তাহলে অধিকতর নিরাপত্তা এবং আরও ভালো ব্যবহারকারীর অভিজ্ঞতার জন্য আপনাকে নতুন সাইন-ইন API-এ স্থানান্তরিত করা উচিত।

অ্যাক্সেস টোকেন অ্যান্টি-প্যাটার্ন থেকে স্থানান্তর করুন

আপনি GoogleAuthUtil.getToken মাধ্যমে প্রাপ্ত অ্যাক্সেস টোকেনগুলিকে আপনার ব্যাকএন্ড সার্ভারে একটি পরিচয় দাবী হিসাবে পাঠাবেন না, যেহেতু আপনি সহজেই যাচাই করতে পারবেন না যে টোকেনটি আপনার ব্যাকএন্ডে জারি করা হয়েছে, আপনাকে আক্রমণকারীর কাছ থেকে একটি অ্যাক্সেস টোকেন সন্নিবেশ করার ঝুঁকিতে ফেলেছে৷

উদাহরণস্বরূপ, যদি আপনার অ্যান্ড্রয়েড কোড নীচের উদাহরণের মতো দেখায়, তাহলে আপনার অ্যাপটিকে বর্তমান সেরা অনুশীলনে স্থানান্তর করা উচিত।

অ্যান্ড্রয়েড কোড

উদাহরণে, অ্যাক্সেস টোকেন অনুরোধগুলি oauth2: GoogleAuthUtil.getToken কল ( oauth2:https://www.googleapis.com/auth/plus.login ) এর জন্য scope প্যারামিটার হিসাবে একটি স্কোপ স্ট্রিং।

GoogleAuthUtil.getToken এর সাথে অর্জিত অ্যাক্সেস টোকেন দিয়ে প্রমাণীকরণের পরিবর্তে, আইডি টোকেন প্রবাহ বা প্রমাণীকরণ কোড প্রবাহ ব্যবহার করুন।

আইডি টোকেন প্রবাহে মাইগ্রেট করুন

যদি আপনার প্রয়োজন হয় ব্যবহারকারীর আইডি, ইমেল ঠিকানা, নাম, বা প্রোফাইল ছবির URL, তাহলে ID টোকেন ফ্লো ব্যবহার করুন।

আইডি টোকেন ফ্লোতে মাইগ্রেট করতে, নিম্নলিখিত পরিবর্তনগুলি করুন:

অ্যান্ড্রয়েড ক্লায়েন্ট সাইড

  • আপনি অনুরোধ করলে GET_ACCOUNTS (পরিচিতি) অনুমতি সরান৷
  • GoogleAuthUtil , Plus.API , AccountPicker.newChooseAccountIntent() , অথবা AccountManager.newChooseAccountIntent( AccountManager.newChooseAccountIntent() ব্যবহার করে Auth.GOOGLE_SIGN_IN_API তে GoogleSignInOptions.Builder.requestIdToken(...) ব্যবহার করে যেকোনো কোড পরিবর্তন করুন।

সার্ভার সাইড

  • আইডি টোকেন প্রমাণের জন্য একটি নতুন এন্ডপয়েন্ট তৈরি করুন
  • আপনার ক্লায়েন্ট অ্যাপগুলি স্থানান্তরিত হওয়ার পরে পুরানো শেষ পয়েন্টটি বন্ধ করুন৷

সার্ভার প্রমাণীকরণ কোড প্রবাহে স্থানান্তর করুন

আপনার সার্ভারের যদি Google ড্রাইভ, ইউটিউব বা পরিচিতিগুলির মতো অন্যান্য Google API অ্যাক্সেস করার প্রয়োজন হয়, তাহলে সার্ভার প্রমাণীকরণ কোড ফ্লো ব্যবহার করুন৷

সার্ভার প্রমাণীকরণ কোড প্রবাহে স্থানান্তর করতে, নিম্নলিখিত পরিবর্তনগুলি করুন:

অ্যান্ড্রয়েড ক্লায়েন্ট সাইড

  • আপনি অনুরোধ করলে GET_ACCOUNTS (পরিচিতি) অনুমতি সরান৷
  • GoogleAuthUtil , Plus.API , AccountPicker.newChooseAccountIntent() , অথবা AccountManager.newChooseAccountIntent( AccountManager.newChooseAccountIntent() ব্যবহার করে Auth.GOOGLE_SIGN_IN_API তে GoogleSignInOptions.Builder.requestServerAuth GoogleSignInOptions.Builder.requestServerAuthCode(...) configurde.

সার্ভার সাইড

আপনি এখনও আপনার পুরানো এবং নতুন এন্ডপয়েন্টগুলির মধ্যে API অ্যাক্সেস লজিক ভাগ করতে পারেন৷ উদাহরণ স্বরূপ:

GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(...);
String accessToken = tokenResponse.getAccessToken();
String refreshToken = tokenResponse.getRefreshToken();
Long expiresInSeconds = tokenResponse.getExpiresInSeconds();

// Shared by your old and new implementation, old endpoint can pass null for refreshToken
private void driveAccess(String refreshToken, String accessToken, Long expiresInSeconds) {
   GoogleCredential credential = new GoogleCredential.Builder()
           .setTransPort(...)
           ...
           .build();
   credential.setAccessToken(accessToken);
   credential.setExpiresInSeconds(expiresInSeconds);
   credential.setRefreshToken(refreshToken);
}

GoogleAuthUtil আইডি টোকেন ফ্লো থেকে স্থানান্তর করুন

আপনি আইডি টোকেন পেতে GoogleAuthUtil ব্যবহার করলে, আপনাকে নতুন সাইন-ইন API আইডি টোকেন ফ্লোতে স্থানান্তর করা উচিত।

উদাহরণস্বরূপ, যদি আপনার অ্যান্ড্রয়েড কোডটি নিম্নলিখিত উদাহরণের মতো দেখায় তবে আপনার স্থানান্তর করা উচিত:

অ্যান্ড্রয়েড কোড

উদাহরণে, আইডি টোকেন অনুরোধ GoogleAuthUtil.getToken কলের জন্য 'স্কোপ' প্যারামিটার হিসাবে audience:server:client_id ক্লায়েন্ট_আইডি এবং আপনার ওয়েব সার্ভারের জন্য ক্লায়েন্ট আইডি ব্যবহার করে ( audience:server:client_id:9414861317621.apps.googleusercontent.com )।

নতুন সাইন-ইন API আইডি টোকেন প্রবাহের নিম্নলিখিত সুবিধা রয়েছে:

  • স্ট্রীমলাইনড ওয়ান-ট্যাপ সাইন-ইন অভিজ্ঞতা
  • আপনার সার্ভার একটি অতিরিক্ত নেটওয়ার্ক কল ছাড়া ব্যবহারকারীর প্রোফাইল তথ্য পেতে পারে

আইডি টোকেন ফ্লোতে মাইগ্রেট করতে, নিম্নলিখিত পরিবর্তনগুলি করুন:

অ্যান্ড্রয়েড ক্লায়েন্ট সাইড

  • আপনি অনুরোধ করলে GET_ACCOUNTS (পরিচিতি) অনুমতি সরান৷
  • GoogleAuthUtil , Plus.API , AccountPicker.newChooseAccountIntent() , অথবা AccountManager.newChooseAccountIntent( AccountManager.newChooseAccountIntent() ব্যবহার করে Auth.GOOGLE_SIGN_IN_API তে GoogleSignInOptions.Builder.requestIdToken(...) ব্যবহার করে যেকোনো কোড পরিবর্তন করুন।

সার্ভার সাইড

নতুন সাইন-ইন এপিআই আইডি টোকেন ইস্যু করে যা OpenID কানেক্ট স্পেসিফিকেশন মেনে চলে, GoogleAuthUtil.getToken এর বিপরীতে, যা একটি অবচিত বিন্যাস ব্যবহার করে। বিশেষ করে, ইস্যুকারী এখন https://accounts.google.com , একটি https স্কিমা সহ।

আপনার মাইগ্রেশন প্রক্রিয়া চলাকালীন, আপনার সার্ভারকে আপনার পুরানো এবং নতুন উভয় Android ক্লায়েন্টদের থেকে আইডি টোকেন যাচাই করতে হবে। টোকেনের উভয় ফর্ম্যাট যাচাই করতে, আপনার ব্যবহার করা ক্লায়েন্ট লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ পরিবর্তন করুন (যদি আপনি একটি ব্যবহার করেন):

  • Java (Google APIs ক্লায়েন্ট লাইব্রেরি): আপগ্রেড করুন 1.21.0 বা নতুন
  • পিএইচপি (গুগল এপিআই ক্লায়েন্ট লাইব্রেরি): আপনি যদি v1 ব্যবহার করেন, 1.1.6 বা নতুন তে আপগ্রেড করুন; আপনি যদি v2 ব্যবহার করেন, তাহলে 2.0.0-RC1 বা নতুনটিতে আপগ্রেড করুন
  • Node.js: আপগ্রেড করুন 0.9.7 বা নতুন
  • পাইথন বা আপনার নিজস্ব বাস্তবায়ন: এই উভয় ইস্যুকারীকে গ্রহণ করুন: https://accounts.google.com এবং accounts.google.com

GoogleAuthUtil সার্ভার প্রমাণীকরণ কোড ফ্লো থেকে স্থানান্তর করুন

আপনি যদি একটি সার্ভার প্রমাণীকরণ কোড পেতে GoogleAuthUtil ব্যবহার করেন, তাহলে আপনাকে নতুন সাইন-ইন API প্রমাণীকরণ কোড ফ্লোতে স্থানান্তরিত করতে হবে।

উদাহরণস্বরূপ, যদি আপনার অ্যান্ড্রয়েড কোডটি নিম্নলিখিত উদাহরণের মতো দেখায় তবে আপনার স্থানান্তর করা উচিত:

অ্যান্ড্রয়েড কোড

উদাহরণে, সার্ভার প্রমাণীকরণ কোডের অনুরোধগুলি oauth2:server:client_id + GoogleAuthUtil.getToken কলের scope প্যারামিটার হিসাবে আপনার ওয়েব সার্ভারের জন্য ক্লায়েন্ট আইডি ব্যবহার করে ( oauth2:server:client_id:9414861317621.apps.googleusercontent.com )।

নতুন সাইন-ইন API প্রমাণীকরণ কোড প্রবাহের নিম্নলিখিত সুবিধা রয়েছে:

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

নতুন প্রমাণীকরণ কোড ফ্লোতে স্থানান্তর করতে, নিম্নলিখিত পরিবর্তনগুলি করুন:

অ্যান্ড্রয়েড ক্লায়েন্ট সাইড

  • আপনি অনুরোধ করলে GET_ACCOUNTS (পরিচিতি) অনুমতি সরান৷
  • GoogleAuthUtil , Plus.API , AccountPicker.newChooseAccountIntent() , অথবা AccountManager.newChooseAccountIntent( AccountManager.newChooseAccountIntent() ব্যবহার করে Auth.GOOGLE_SIGN_IN_API তে GoogleSignInOptions.Builder.requestServerAuth GoogleSignInOptions.Builder.requestServerAuthCode(...) configurde.

সার্ভার সাইড

আপনার বর্তমান কোডটি রাখুন, কিন্তু GoogleAuthorizationCodeTokenRequest অবজেক্ট তৈরি করার সময় টোকেন সার্ভার এন্ডপয়েন্ট হিসাবে https://oauth2.googleapis.com/token নির্দিষ্ট করুন, যাতে আপনি ব্যবহারকারীর ইমেল, ব্যবহারকারীর আইডি এবং প্রোফাইলের তথ্য ছাড়াই একটি আইডি টোকেন পেতে পারেন আরেকটি নেটওয়ার্ক কল প্রয়োজন। এই এন্ডপয়েন্টটি সম্পূর্ণভাবে পশ্চাদপদ সামঞ্জস্যপূর্ণ, এবং নীচের কোডটি আপনার পুরানো এবং নতুন অ্যান্ড্রয়েড ক্লায়েন্ট বাস্তবায়ন উভয় থেকে পুনরুদ্ধার করা সার্ভার প্রমাণীকরণ কোডগুলির জন্য কাজ করবে৷

GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(
                transport,
                jsonFactory,
                // Use below for tokenServerEncodedUrl parameter
                "https://oauth2.googleapis.com/token",
                clientSecrets.getDetails().getClientId(),
                clientSecrets.getDetails().getClientSecret(),
                authCode,
                REDIRECT_URI)
               .execute();

...

// You can also get an ID token from auth code exchange.
GoogleIdToken googleIdToken = tokenResponse.parseIdToken();
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
        .setAudience(Arrays.asList(SERVER_CLIENT_ID))
        .setIssuer("https://accounts.google.com")
        .build();
// Refer to ID token documentation to see how to get data from idToken object.
GoogleIdToken idToken = verifier.verify(idTokenString);
...