उपयोगकर्ता के क्रेडेंशियल फिर से पाने के बाद या फिर से इस्तेमाल किए जा सकने वाले साइन-इन संकेत, यह देखा जा सकता है कि क्रेडेंशियल के लिए आईडी टोकन उपलब्ध है या नहीं. आईडी टोकन उपयोगकर्ता की पहचान से जुड़ा ऐसा दावा जिसमें उपयोगकर्ता की बुनियादी प्रोफ़ाइल भी शामिल हो जिसमें इस ईमेल पते की पुष्टि की गई हो. Google. आईडी टोकन उपलब्ध होने पर, उनका इस्तेमाल सुरक्षित तरीके से किया जा सकता है अपने ऐप्लिकेशन के बैकएंड से पुष्टि करने या ईमेल की पुष्टि करने वाले चरण को छोड़ने के लिए तो आप इन सवालों का जवाब दे सकते हैं.
आईडी टोकन तब उपलब्ध होता है, जब किसी Credential
ऑब्जेक्ट का यूज़र आईडी, उपयोगकर्ता से मेल खाता है
उस Google खाते का आईडी जिसे डिवाइस पर साइन इन किया गया है.
आईडी टोकन से साइन इन करने के लिए, पहले getIdTokens
की मदद से आईडी टोकन फिर से पाएं
तरीका. इसके बाद, अपने ऐप्लिकेशन के बैकएंड पर आईडी टोकन भेजें. बैकएंड पर, पुष्टि करें
ऐसा टोकन जो Google API क्लाइंट लाइब्रेरी या सामान्य मकसद वाले JWT का इस्तेमाल करता है
लाइब्रेरी.
शुरू करने से पहले
- यह ज़रूरी है कि आपके ऐप्लिकेशन में उपयोगकर्ता के क्रेडेंशियल हासिल किए जा सकें या साइन-इन संकेत पाएं.
- आपको कॉल करते समय
setAccountTypes(IdentityProviders.GOOGLE)
को कॉल करना होगा जब आपCredentialRequest
औरHintRequest
ऑब्जेक्ट.
क्रेडेंशियल ऑब्जेक्ट से आईडी टोकन पाएं
उपयोगकर्ता के क्रेडेंशियल वापस पाने के बाद, देखें कि 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 साइन-इन' से जुड़ा दस्तावेज़ देखें देखें.