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() ব্যবহার করে Auth.GOOGLE_SIGN_IN_API তে GoogleSignInOptions.Builder.requestIdToken(...) ব্যবহার করে যেকোনো কোড পরিবর্তন করুন।

সার্ভার সাইড

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

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

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

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

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

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

সার্ভার সাইড

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

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

  • 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 প্রমাণীকরণ কোড ফ্লোতে স্থানান্তরিত করতে হবে।

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

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

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

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

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

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

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

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

সার্ভার সাইড

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

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);
...