GoogleAuthUtil और Plus.API से माइग्रेट करें

अगर आपने पहले कभी इसका इस्तेमाल करके 'Google साइन-इन' के साथ इंटिग्रेट किया था, तो GoogleAuthUtil.getToken या Plus.API, आपको नए वर्शन पर माइग्रेट करना चाहिए बेहतर सुरक्षा और बेहतर उपयोगकर्ता अनुभव के लिए, साइन-इन एपीआई.

ऐक्सेस टोकन के एंटी-पैटर्न से माइग्रेट करें

आपको GoogleAuthUtil.getToken से मिले ऐक्सेस टोकन, इस ईमेल पते पर नहीं भेजने चाहिए अपना बैकएंड सर्वर पहचान के लिए सुनिश्चित करें, क्योंकि आप आसानी से सत्यापित नहीं कर सकते यह पता लगाया जा सकता है कि टोकन आपके बैकएंड के लिए जारी किया गया है. इस वजह से, आपके पास शामिल करने की अनुमति नहीं है को ऐक्सेस टोकन से सुरक्षित किया जा सकता है.

उदाहरण के लिए, अगर आपका Android कोड नीचे दिए गए उदाहरण जैसा दिखता है, तो आपको अपने ऐप्लिकेशन को मौजूदा सबसे सही तरीकों पर माइग्रेट करें.

Android कोड

इस उदाहरण में, ऐक्सेस टोकन के अनुरोधों के लिए, oauth2: और स्कोप स्ट्रिंग का इस्तेमाल GoogleAuthUtil.getToken कॉल के लिए scope पैरामीटर (oauth2:https://www.googleapis.com/auth/plus.login).

इससे हासिल किए गए ऐक्सेस टोकन से पुष्टि करने के बजाय GoogleAuthUtil.getToken, आईडी टोकन फ़्लो या ऑथराइज़ेशन कोड फ़्लो का इस्तेमाल करें.

आईडी टोकन फ़्लो पर माइग्रेट करें

अगर आपको सिर्फ़ उपयोगकर्ता का आईडी, ईमेल पता, नाम या प्रोफ़ाइल फ़ोटो का यूआरएल चाहिए, आईडी टोकन फ़्लो का इस्तेमाल करें.

आईडी टोकन फ़्लो पर माइग्रेट करने के लिए, ये बदलाव करें:

Android क्लाइंट साइड

  • अगर आप GET_ACCOUNTS (संपर्क) की अनुमति का अनुरोध करते हैं, तो उसे हटाएं
  • GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() या AccountManager.newChooseAccountIntent() से Auth.GOOGLE_SIGN_IN_API GoogleSignInOptions.Builder.requestIdToken(...) कॉन्फ़िगरेशन.

सर्वर साइड

  • आईडी टोकन की पुष्टि के लिए नया एंडपॉइंट बनाएं
  • क्लाइंट के ऐप्लिकेशन माइग्रेट होने के बाद, पुराने एंडपॉइंट को बंद करें

सर्वर के ऑथराइज़ेशन कोड के फ़्लो पर माइग्रेट करें

अगर आपके सर्वर को Google Drive, YouTube जैसे अन्य Google API का ऐक्सेस चाहिए, या संपर्क के लिए, सर्वर के पुष्टि करने वाले कोड फ़्लो का इस्तेमाल करें.

सर्वर के ऑथराइज़ेशन कोड के फ़्लो पर माइग्रेट करने के लिए, ये बदलाव करें:

Android क्लाइंट साइड

  • अगर आप GET_ACCOUNTS (संपर्क) की अनुमति का अनुरोध करते हैं, तो उसे हटाएं
  • GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() या AccountManager.newChooseAccountIntent() से Auth.GOOGLE_SIGN_IN_API GoogleSignInOptions.Builder.requestServerAuthCode(...) कॉन्फ़िगरेशन.

सर्वर साइड

आपके पास अब भी अपने पुराने और नए एंडपॉइंट के बीच, एपीआई ऐक्सेस लॉजिक शेयर करने का विकल्प है. इसके लिए उदाहरण:

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 का इस्तेमाल किया जाता है, तो आपको नए वर्शन पर माइग्रेट करना चाहिए साइन-इन एपीआई आईडी टोकन फ़्लो.

उदाहरण के लिए, अगर आपका Android कोड नीचे दिए गए उदाहरण की तरह दिखता है, तो आपको migrate:

Android कोड

इस उदाहरण में, आईडी टोकन के लिए अनुरोध, audience:server:client_id के साथ-साथ आपके वेब सर्वर के लिए 'स्कोप' पैरामीटर के रूप में GoogleAuthUtil.getToken कॉल (audience:server:client_id:9414861317621.apps.googleusercontent.com).

नए साइन-इन एपीआई आईडी टोकन फ़्लो के ये फ़ायदे हैं:

  • सिर्फ़ एक टैप में साइन इन करने की सुविधा
  • आपका सर्वर, अतिरिक्त नेटवर्क कॉल के बिना भी उपयोगकर्ता की प्रोफ़ाइल की जानकारी हासिल कर सकता है

आईडी टोकन फ़्लो पर माइग्रेट करने के लिए, ये बदलाव करें:

Android क्लाइंट साइड

  • अगर आप GET_ACCOUNTS (संपर्क) की अनुमति का अनुरोध करते हैं, तो उसे हटाएं
  • GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() या AccountManager.newChooseAccountIntent() से Auth.GOOGLE_SIGN_IN_API GoogleSignInOptions.Builder.requestIdToken(...) कॉन्फ़िगरेशन.

सर्वर साइड

नया साइन-इन एपीआई, OpenID Connect का पालन करने वाले आईडी टोकन जारी करता है खास जानकारी, GoogleAuthUtil.getToken के उलट है जिसमें अब काम नहीं करने वाले फ़ॉर्मैट का इस्तेमाल किया जाता है. खास तौर पर, जारी करने वाले को अब https://accounts.google.com है और https स्कीमा चुनें.

माइग्रेशन की प्रोसेस के दौरान, आपके सर्वर को दोनों खातों के आईडी टोकन की पुष्टि करनी होगी अपने पुराने और नए Android क्लाइंट को कॉपी करने के लिए किया जा सकता है. टोकन के दोनों फ़ॉर्मैट की पुष्टि करने के लिए, जो आपके द्वारा उपयोग की जाने वाली क्लाइंट लाइब्रेरी से संबंधित है (अगर किसी एक का उपयोग किया जाता है):

  • Java (Google API क्लाइंट लाइब्रेरी): 1.21.0 या इसके बाद के वर्शन में अपग्रेड करें
  • PHP (Google API क्लाइंट लाइब्रेरी): अगर आपने v1 का इस्तेमाल किया है, तो 1.1.6 या इसके बाद के वर्शन पर अपग्रेड करें; अगर v2 का इस्तेमाल किया जा रहा है, तो 2.0.0-RC1 या इसके बाद के वर्शन पर अपग्रेड करें
  • Node.js: 0.9.7 या इसके बाद के वर्शन पर अपग्रेड करें
  • Python या अपने हिसाब से इस्तेमाल करने का तरीका: इन दोनों जारी करने वालों को स्वीकार करें: https://accounts.google.com और accounts.google.com

GoogleAuthUtil सर्वर के ऑथराइज़ेशन कोड के फ़्लो से माइग्रेट करना

अगर आपने सर्वर का ऑथराइज़ेशन कोड पाने के लिए GoogleAuthUtil का इस्तेमाल किया है, तो आपको नया Sign-In API ऑथराइज़ेशन कोड फ़्लो.

उदाहरण के लिए, अगर आपका Android कोड नीचे दिए गए उदाहरण की तरह दिखता है, तो आपको migrate:

Android कोड

उदाहरण में, सर्वर के ऑथराइज़ेशन कोड के अनुरोध, oauth2:server:client_id + आपके वेब सर्वर की क्लाइंट आईडीscope GoogleAuthUtil.getToken कॉल (oauth2:server:client_id:9414861317621.apps.googleusercontent.com).

नए साइन-इन एपीआई के ऑथराइज़ेशन कोड के फ़्लो के ये फ़ायदे हैं:

  • सिर्फ़ एक टैप में साइन इन करने की सुविधा
  • अगर नीचे दी गई, माइग्रेशन गाइड का पालन किया जाता है, तो आपके सर्वर को आईडी टोकन मिल सकता है जब पुष्टि करने के कोड को एक्सचेंज किया जाता है, तो उपयोगकर्ता की प्रोफ़ाइल जानकारी शामिल होती है

पुष्टि करने के कोड के नए फ़्लो पर माइग्रेट करने के लिए, ये बदलाव करें:

Android क्लाइंट साइड

  • अगर आप GET_ACCOUNTS (संपर्क) की अनुमति का अनुरोध करते हैं, तो उसे हटाएं
  • GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() या AccountManager.newChooseAccountIntent() से Auth.GOOGLE_SIGN_IN_API GoogleSignInOptions.Builder.requestServerAuthCode(...) कॉन्फ़िगरेशन.

सर्वर साइड

अपना मौजूदा कोड बनाए रखें, लेकिन उसमें https://oauth2.googleapis.com/token के बारे में बताएं इसे बनाते समय, टोकन सर्वर एंडपॉइंट के तौर पर GoogleAuthorizationCodeTokenRequest ऑब्जेक्ट, ताकि आपको आईडी टोकन मिल सके बिना किसी अन्य जानकारी के उपयोगकर्ता के ईमेल, यूज़र आईडी, और प्रोफ़ाइल की जानकारी का इस्तेमाल करें नेटवर्क कॉल. यह एंडपॉइंट पूरी तरह से पुराने सिस्टम के साथ काम करता है. साथ ही, इसके नीचे दिया गया कोड है आपके पुराने और नए, दोनों 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);
...
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है