आईडी टोकन का इस्तेमाल करके साइन इन करें

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

आईडी टोकन तब उपलब्ध होता है, जब किसी Credential ऑब्जेक्ट का यूज़र आईडी, उपयोगकर्ता से मेल खाता है उस Google खाते का आईडी जिसे डिवाइस पर साइन इन किया गया है.

आईडी टोकन से साइन इन करने के लिए, पहले getIdTokens की मदद से आईडी टोकन फिर से पाएं तरीका. इसके बाद, अपने ऐप्लिकेशन के बैकएंड पर आईडी टोकन भेजें. बैकएंड पर, पुष्टि करें ऐसा टोकन जो Google API क्लाइंट लाइब्रेरी या सामान्य मकसद वाले JWT का इस्तेमाल करता है लाइब्रेरी.

शुरू करने से पहले

क्रेडेंशियल ऑब्जेक्ट से आईडी टोकन पाएं

उपयोगकर्ता के क्रेडेंशियल वापस पाने के बाद, देखें कि Credentials ऑब्जेक्ट में एक आईडी टोकन शामिल होता है. अगर ऐसा होता है, तो इसे वापस पाने के लिए getIdTokens पर कॉल करें और भेजें को अपने बैकएंड में एचटीटीपीएस पीओएसटी से जोड़ना होगा.

if (!credential.getIdTokens().isEmpty()) {
    String idToken = credential.getIdTokens().get(0).getIdToken();

    HttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost("https://yourbackend.example.com/tokensignin");

    try {
        List nameValuePairs = new ArrayList(1);
        nameValuePairs.add(new BasicNameValuePair("idToken", idToken));
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpClient.execute(httpPost);
        int statusCode = response.getStatusLine().getStatusCode();
        final String responseBody = EntityUtils.toString(response.getEntity());
        Log.i(TAG, "Signed in as: " + responseBody);
    }
}

बैकएंड पर आईडी टोकन की पुष्टि करें

एचटीटीपीएस पीओएसटी से आईडी टोकन मिलने के बाद, आपको यह पुष्टि करनी होगी कि हस्ताक्षर करें और टोकन के aud, iss, और exp दावों की पुष्टि करें.

पासवर्ड के लिए Smart Lock की ओर से आईडी टोकन के aud दावे में ये चीज़ें शामिल हैं प्रारूप:

android://SHA512_HASH@ANDROID_PACKAGE_NAME

वैल्यू SHA512HASH , आपके हस्ताक्षर का SHA-512 हैश है प्रमाणपत्र. आपको यह वैल्यू, keytool और openssl यूटिलिटी का इस्तेमाल करके मिल सकती है:

keytool -exportcert -keystore path-to-keystore -alias key-name 
| openssl sha -sha512 -binary
| base64 -w 0
| tr '+/' '-
'

इसके अलावा, किसी ऐसे आईडी टोकन की जांच करके जो आपको SHA-512 हैश मिल सकता है वह मान्य है.

JWT लाइब्रेरी, पुष्टि करने से जुड़े इनमें से कुछ टास्क आपके लिए कर सकती हैं. उदाहरण के लिए, Java के लिए Google API क्लाइंट लाइब्रेरी का इस्तेमाल करके:

import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.Payload;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;

...

// Verifier that checks that the token has the proper issuer and audience,
// and hasn't expired
private static GoogleIdTokenVerifier verifier =
    new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
        .setAudience(Arrays.asList(String.format("android://%s@%s", SHA512_HASH, PACKAGE_NAME)))
        .build();

// (Receive idTokenString by HTTPS POST)

GoogleIdToken idToken = verifier.verify(idTokenString);
if (idToken != null) {
  Payload payload = idToken.getPayload();
  System.out.println("User email: " + payload.getEmail());
  if (payload.getEmailVerified()) {
    System.out.println("Email verified by Google.");
  }
} else {
  System.out.println("Invalid ID token.");
}

'Google साइन-इन' से जुड़ा दस्तावेज़ देखें देखें.