Web için Google ile Oturum Açma JavaScript Platformu Kitaplığı'nı kullanımdan kaldırıyoruz. Kitaplık, 31 Mart 2023'te kullanımdan kaldırılan tarihten sonra indirilemeyecek. Bunun yerine, Web için yeni Google Kimlik Hizmetleri'ni kullanın.
Yeni oluşturulan İstemci Kimliklerinin artık varsayılan olarak eski Platform Kitaplığı'nı kullanması engellendi. Mevcut İstemci Kimlikleri bundan etkilenmeyecektir. 29 Temmuz 2022'den önce oluşturulan yeni İstemci Kimlikleri, Google Platform Kitaplığı'nın kullanımını etkinleştirmek üzere `plugin_name` ayarını yapabilir.

GoogleAuthUtil ve Plus.API'den taşıma

Geçmişte Google ile Oturum Açma özelliğini GoogleAuthUtil.getToken veya Plus.API ile entegre ettiyseniz daha fazla güvenlik ve daha iyi kullanıcı deneyimi için en yeni Oturum Açma API'sine geçmeniz gerekir.

Erişim jetonundan kalıp kaldırma

GoogleAuthUtil.getToken ile elde edilen erişim jetonlarını, arka uç sunucunuza kimlik doğrulaması olarak göndermemelisiniz. Bunun nedeni, jetonun arka ucunuza verildiğini kolayca doğrulayabilmeniz ve bir saldırgandan erişim jetonu eklemeye karşı savunmasız hale gelmenizdir.

Örneğin, Android kodunuz aşağıdaki örneğe benziyorsa uygulamanızı mevcut en iyi uygulamalara taşımanız gerekir.

Android kodu

Örnekte, erişim jetonu istekleri, oauth2: çağrısı ve GoogleAuthUtil.getToken çağrısı (oauth2:https://www.googleapis.com/auth/plus.login) için scope parametresi olarak bir kapsam dizesi kullanır.

GoogleAuthUtil.getToken ile edinilen bir erişim jetonuyla kimlik doğrulaması yapmak yerine, kimlik jetonu akışını veya yetkilendirme kodu akışını kullanın.

Kimlik jetonu akışına geçiş yapın

Tek ihtiyacınız kullanıcı kimliği, e-posta adresi, ad veya profil resmi URL'si ise Kimlik jetonu akışını kullanın.

Kimlik jetonu akışına geçiş yapmak için aşağıdaki değişiklikleri yapın:

Android istemci tarafı

  • İsterseniz GET_ACCOUNTS (Kişiler) iznini kaldırın
  • GoogleSignInOptions.Builder.requestIdToken(...) yapılandırması ile GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() veya AccountManager.newChooseAccountIntent() kullanan tüm kodları Auth.GOOGLE_SIGN_IN_API'e geçirin.

Sunucu tarafı

Sunucu kimlik doğrulama kodu akışına geçiş yapın

Sunucunuzun, Google Drive, YouTube veya Kişiler gibi diğer Google API'lerine erişmesi gerekiyorsa sunucu kimlik doğrulama kodu akışını kullanın.

Sunucu kimlik doğrulama kodu akışına geçiş yapmak için aşağıdaki değişiklikleri yapın:

Android istemci tarafı

  • İsterseniz GET_ACCOUNTS (Kişiler) iznini kaldırın
  • GoogleSignInOptions.Builder.requestServerAuthCode(...) yapılandırması ile GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() veya AccountManager.newChooseAccountIntent() kullanan tüm kodları Auth.GOOGLE_SIGN_IN_API'e geçirin.

Sunucu tarafı

API erişim mantığını eski ve yeni uç noktalarınız arasında paylaşmaya devam edebilirsiniz. Örneğin:

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 kimlik jetonu akışından taşıma

Kimlik jetonları almak için GoogleAuthUtil kullanıyorsanız yeni Sign-In API Kimlik jetonu akışına geçmeniz gerekir.

Örneğin, Android kodunuz aşağıdaki örneğe benziyorsa taşımanız gerekir:

Android kodu

Bu örnekte, kimlik jetonu istekleri audience:server:client_id çağrısının yanı sıra GoogleAuthUtil.getToken çağrısı (audience:server:client_id:9414861317621.apps.googleusercontent.com) için "scope" parametresi olarak web sunucunuzun istemci kimliğini kullanır.

Yeni Sign-In API Kimliği jeton akışı aşağıdaki avantajlara sahiptir:

  • Kolay dokunarak tek oturum açma deneyimi
  • Sunucunuz, ek bir ağ çağrısına gerek olmadan kullanıcı profili bilgilerini alabilir

Kimlik jetonu akışına geçiş yapmak için aşağıdaki değişiklikleri yapın:

Android istemci tarafı

  • İsterseniz GET_ACCOUNTS (Kişiler) iznini kaldırın
  • GoogleSignInOptions.Builder.requestIdToken(...) yapılandırması ile GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() veya AccountManager.newChooseAccountIntent() kullanan tüm kodları Auth.GOOGLE_SIGN_IN_API'e geçirin.

Sunucu tarafı

Yeni Sign-In API, kullanımdan kaldırılan bir biçimi kullanan GoogleAuthUtil.getToken yerine OpenID Connect spesifikasyonuna uyan kimlik jetonları yayınlar. Özellikle, sertifikayı veren artık https şemasıyla https://accounts.google.com.

Taşıma işlemi sırasında sunucunuzun hem eski hem de yeni Android istemcilerinden kimlik jetonunu doğrulaması gerekir. Jetonun her iki biçimini de doğrulamak için, kullandığınız istemci kitaplığına karşılık gelen değişikliği yapın (kullanıyorsanız):

  • Java (Google API'leri İstemci Kitaplıkları): 1.21.0 veya daha yeni bir sürüme geçin
  • PHP (Google API'leri İstemci Kitaplıkları): v1 kullanıyorsanız 1.1.6 veya daha yeni bir sürüme geçin. 2. sürümü kullanıyorsanız 2.0.0-RC1 veya daha yeni bir sürüme geçin.
  • Node.js: 0.9.7 veya daha yeni bir sürüme geçme
  • Python veya kendi uygulamalarınız: Şu kuruluşların her ikisini de kabul edin: https://accounts.google.com ve accounts.google.com

GoogleAuthUtil sunucusu yetkilendirme kodu akışından taşıma

Sunucu kimlik doğrulama kodu almak için GoogleAuthUtil kullanıyorsanız yeni Sign-In API yetkilendirme kodu akışına geçmeniz gerekir.

Örneğin, Android kodunuz aşağıdaki örneğe benziyorsa taşımanız gerekir:

Android kodu

Bu örnekte, sunucu kimlik doğrulama kodu istekleri GoogleAuthUtil.getToken çağrısı için scope parametresi olarak oauth2:server:client_id + web sunucunuzun istemci kimliğini kullanır (oauth2:server:client_id:9414861317621.apps.googleusercontent.com).

Yeni Sign-In API kimlik doğrulama kodu akışı şu avantajlara sahiptir:

  • Kolay dokunarak tek oturum açma deneyimi
  • Aşağıdaki taşıma kılavuzunu takip ederseniz sunucunuz, yetkilendirme kodu değişimini yaptığınızda kullanıcının profil bilgilerini içeren bir kimlik jetonu alabilir.

Yeni kimlik doğrulama kodu akışına geçiş yapmak için aşağıdaki değişiklikleri yapın:

Android istemci tarafı

  • İsterseniz GET_ACCOUNTS (Kişiler) iznini kaldırın
  • GoogleSignInOptions.Builder.requestServerAuthCode(...) yapılandırması ile GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() veya AccountManager.newChooseAccountIntent() kullanan tüm kodları Auth.GOOGLE_SIGN_IN_API'e geçirin.

Sunucu tarafı

Mevcut kodunuzu saklayın, ancak GoogleAuthorizationCodeTokenRequest nesnesini oluştururken jeton sunucusu uç noktası olarak https://oauth2.googleapis.com/token değerini belirtin. Böylece başka bir ağ çağrısına gerek kalmadan kullanıcının e-posta, kullanıcı kimliği ve profil bilgilerini içeren bir kimlik jetonu alabilirsiniz. Bu uç nokta geriye dönük olarak uyumludur ve aşağıdaki kod, hem eski hem de yeni Android istemci uygulamalarınızdan alınan sunucu kimlik doğrulama kodları için çalışır.

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