Biz edilir web için Google Sign-In JavaScript Platformu Kütüphane durdurulan . Kimlik doğrulama ve kullanıcı oturum açma için, her ikisi için yeni Google Kimlik Hizmetleri SDK'larını kullanmak Web ve Android yerine.

GoogleAuthUtil ve Plus.API'dan geçiş yapın

Geçmişte GoogleAuthUtil.getToken veya Plus.API kullanarak Google Oturum Açma ile entegre Plus.API , daha fazla güvenlik ve daha iyi bir kullanıcı deneyimi için en yeni Oturum Açma API'sına geçmelisiniz.

Erişim belirteci anti-modelinden geçiş yapın

GoogleAuthUtil.getToken ile elde GoogleAuthUtil.getToken erişim jetonlarını arka uç sunucunuza kimlik doğrulaması olarak göndermemelisiniz, çünkü GoogleAuthUtil.getToken arka GoogleAuthUtil.getToken kolayca doğrulayamazsınız ve sizi bir saldırganın erişim jetonunun eklenmesine karşı savunmasız bırakır.

Örneğin, Android kodunuz aşağıdaki örnekteki gibi görünüyorsa, uygulamanızı mevcut en iyi uygulamalara taşımalısınız.

Android kodu

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

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

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

İhtiyacınız olan tek şey kullanıcının kimliği, e-posta adresi, adı veya profil resmi URL'siyse, kimlik belirteci akışını kullanın.

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

Android istemci tarafı

  • GET_ACCOUNTS (Kişiler) iznini kaldırın
  • GoogleAuthUtil , Plus.API , AccountPicker.newChooseAccountIntent() veya AccountManager.newChooseAccountIntent() kullanarak herhangi bir kodu GoogleSignInOptions.Builder.requestIdToken(...) yapılandırmasıyla Auth.GOOGLE_SIGN_IN_API olarak değiştirin.

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çmek için aşağıdaki değişiklikleri yapın:

Android istemci tarafı

  • GET_ACCOUNTS (Kişiler) iznini kaldırın
  • GoogleAuthUtil , Plus.API , AccountPicker.newChooseAccountIntent() veya AccountManager.newChooseAccountIntent() kullanarak herhangi bir kodu GoogleSignInOptions.Builder.requestServerAuthCode(...) yapılandırmasıyla Auth.GOOGLE_SIGN_IN_API olarak değiştirin.

Sunucu tarafı

Yine de eski ve yeni uç noktalarınız arasında API erişim mantığını paylaşabilirsiniz. Ö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 ID jeton akışından geçiş yapın

Kimlik jetonları almak için GoogleAuthUtil kullanıyorsanız, yeni Oturum Açma API Kimliği jeton akışına geçmeniz gerekir.

Örneğin, Android kodunuz aşağıdaki örnekteki gibi görünüyorsa, geçiş yapmanız gerekir:

Android kodu

Örnekte, kimlik jetonu istekleri, GoogleAuthUtil.getToken çağrısı ( audience:server:client_id:9414861317621.apps.googleusercontent.com ) için "kapsam" parametresi olarak audience:server:client_id artı web sunucunuzun istemci kimliğini kullanır.

Yeni Oturum Açma API Kimliği jeton akışı aşağıdaki avantajlara sahiptir:

  • Tek dokunuşla oturum açma deneyimi kolaylaştırıldı
  • Sunucunuz, fazladan bir ağ araması olmadan kullanıcı profili bilgilerini alabilir

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

Android istemci tarafı

  • GET_ACCOUNTS (Kişiler) iznini kaldırın
  • GoogleAuthUtil , Plus.API , AccountPicker.newChooseAccountIntent() veya AccountManager.newChooseAccountIntent() kullanarak herhangi bir kodu GoogleSignInOptions.Builder.requestIdToken(...) yapılandırmasıyla Auth.GOOGLE_SIGN_IN_API olarak değiştirin.

Sunucu tarafı

Yeni Oturum Açma API'si, kullanımdan kaldırılmış bir biçim kullanan GoogleAuthUtil.getToken aksine, OpenID Connect spesifikasyonuyla uyumlu kimlik jetonları GoogleAuthUtil.getToken . Özellikle, verenin artık https://accounts.google.com bir ile, https şema.

Taşıma işleminiz sırasında, sunucunuzun hem eski hem de yeni Android istemcilerinizden gelen kimlik jetonunu doğrulaması gerekir. Belirtecin 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 (birini kullanıyorsanız):

  • Java (Google APIs İstemci Kitaplıkları): 1.21.0 veya daha yenisine yükseltin
  • PHP (Google APIs Client Libraries): v1 kullanıyorsanız, 1.1.6 veya daha yeni bir sürüme yükseltin; v2 kullanıyorsanız, 2.0.0-RC1 veya daha yenisine yükseltin
  • Node.js: 0.9.7 veya daha yenisine yükseltin
  • Python veya kendi uygulamalarınız: şu yayıncıların ikisini de kabul https://accounts.google.com : https://accounts.google.com ve accounts.google.com

GoogleAuthUtil sunucu kimlik doğrulama kodu akışından geçiş yapın

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

Örneğin, Android kodunuz aşağıdaki örnekteki gibi görünüyorsa, geçiş yapmanız gerekir:

Android kodu

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

Yeni Oturum Açma API'sı kimlik doğrulama kodu akışının aşağıdaki avantajları vardır:

  • Tek dokunuşla oturum açma deneyimi kolaylaştırıldı
  • Aşağıdaki taşıma kılavuzunu takip ederseniz, yetkilendirme kodu değişimini yaptığınızda sunucunuz kullanıcının profil bilgilerini içeren bir kimlik jetonu alabilir.

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

Android istemci tarafı

  • GET_ACCOUNTS (Kişiler) iznini kaldırın
  • GoogleAuthUtil , Plus.API , AccountPicker.newChooseAccountIntent() veya AccountManager.newChooseAccountIntent() kullanarak herhangi bir kodu GoogleSignInOptions.Builder.requestServerAuthCode(...) yapılandırmasıyla Auth.GOOGLE_SIGN_IN_API olarak değiştirin.

Sunucu tarafı

Mevcut kodunuzu koruyun, ancak GoogleAuthorizationCodeTokenRequest nesnesini oluştururken jeton sunucusu uç noktası olarak https://oauth2.googleapis.com/token belirtin, böylece kullanıcının e-postası, kullanıcı kimliği ve profil bilgileriyle birlikte bir kimlik jetonu, başka bir şebeke araması gerek. Bu uç nokta tamamen 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ışacaktı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);
...