Geçmişte Google ile Oturum Açma ile entegre ettiyseniz:
GoogleAuthUtil.getToken
veya Plus.API
, en yeni
Daha fazla güvenlik ve daha iyi bir kullanıcı deneyimi için Oturum Açma API'si.
Erişim jetonu karşıt kalıbından taşıma
GoogleAuthUtil.getToken
ile alınan erişim jetonlarını şu adrese göndermemelisiniz:
kolayca doğrulayamadığınızdan kimlik doğrulaması olarak arka uç sunucunuzu
Bu da jetonun arka ucunuza verildiğini ve bu nedenle ekleme işlemlerine karşı savunmasız kalmanıza
bir saldırıya uğradığını doğrulamalısınız.
Örneğin, Android kodunuz aşağıdaki örneğe benziyorsa Uygulamanızı mevcut en iyi uygulamalara taşıyın.
Bu örnekte, erişim jetonu isteklerioauth2:
GoogleAuthUtil.getToken
çağrısı için scope
parametresi
(oauth2:https://www.googleapis.com/auth/plus.login
).
Kimlik doğrulaması için kullanılan bir erişim jetonuyla
GoogleAuthUtil.getToken
, kimlik jetonu akışını veya yetkilendirme kodu akışını kullanın.
Kimlik jetonu akışına geçin
Yalnızca kullanıcının kimliği, e-posta adresi, adı veya profil resmi URL'si gerekiyorsa 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ı
- İstekte bulunursanız
GET_ACCOUNTS
(Kişiler) iznini kaldırın GoogleAuthUtil
,Plus.API
ve diğer düğmeleri kullanarakAccountPicker.newChooseAccountIntent()
veyaAccountManager.newChooseAccountIntent()
-Auth.GOOGLE_SIGN_IN_API
arasıGoogleSignInOptions.Builder.requestIdToken(...)
yapılandırması.
Sunucu tarafı
- Kimlik jetonu kimlik doğrulaması için yeni bir uç nokta oluşturun
- İstemci uygulamalarınız taşındıktan sonra eski uç noktayı devre dışı bırakın
Sunucu kimlik doğrulama kodu akışına git
Sunucunuzun, Google Drive, YouTube, veya Kişiler'de kayıtlı değilseniz sunucu kimlik doğrulama kodu akışını kullanın.
Sunucu yetkilendirme kodu akışına geçmek için aşağıdaki değişiklikleri yapın:
Android istemci tarafı
- İstekte bulunursanız
GET_ACCOUNTS
(Kişiler) iznini kaldırın GoogleAuthUtil
,Plus.API
ve diğer düğmeleri kullanarakAccountPicker.newChooseAccountIntent()
veyaAccountManager.newChooseAccountIntent()
-Auth.GOOGLE_SIGN_IN_API
GoogleSignInOptions.Builder.requestServerAuthCode(...)
yapılandırması.
Sunucu tarafı
- Sunucu yetkilendirme kodu akışı için yeni bir uç nokta oluşturun
- İstemci uygulamalarınız taşındıktan sonra eski uç noktayı devre dışı bırakın
Bununla birlikte, eski ve yeni uç noktalarınız arasında API erişim mantığını 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 jeton akışından taşıma
Kimlik jetonları almak için GoogleAuthUtil
kullanıyorsanız yeni
Oturum Açma API'si Kimlik jetonu akışı.
Örneğin, Android kodunuz aşağıdaki örneğe benziyorsa migrate:
Örnekte, kimlik jetonu istekleri audience:server:client_id
ve
"scope" parametresi olarak web sunucunuzun istemci kimliğini
GoogleAuthUtil.getToken
araması
(audience:server:client_id:9414861317621.apps.googleusercontent.com
).
Yeni Oturum Açma API'si kimliği jeton akışı aşağıdaki avantajları sağlar:
- Tek dokunuşla daha kolay oturum açma deneyimi
- Sunucunuz ek bir ağ çağrısı 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ı
- İstekte bulunursanız
GET_ACCOUNTS
(Kişiler) iznini kaldırın GoogleAuthUtil
,Plus.API
ve diğer düğmeleri kullanarakAccountPicker.newChooseAccountIntent()
veyaAccountManager.newChooseAccountIntent()
-Auth.GOOGLE_SIGN_IN_API
arasıGoogleSignInOptions.Builder.requestIdToken(...)
yapılandırması.
Sunucu tarafı
Yeni Oturum Açma API'si, COPPA Connect ile uyumlu kimlik jetonları yayınlar.
Bu spesifikasyon, kullanımdan kaldırılmış bir biçim kullanan GoogleAuthUtil.getToken
'den farklıdır.
Özellikle, veren kuruluş artık https
ile https://accounts.google.com
oldu.
şema.
Taşıma işleminiz sırasında sunucunuzun, iki taraftan da kimlik jetonunu doğrulaması gerekir Android istemcileriniz hakkında bilgi edinin. Jetonun her iki biçimini de doğrulamak için kullandığınız istemci kitaplığına karşılık gelen bir değişiklik (varsa):
- Java (Google API'leri İstemci Kitaplıkları): 1.21.0 veya daha yeni bir sürüme yükseltin
- PHP (Google API'leri İstemci Kitaplıkları): v1 kullanıyorsanız 1.1.6 veya daha yeni bir sürüme geçin; v2 kullanıyorsanız 2.0.0-RC1 veya daha yeni bir sürüme yükseltin
- Node.js: 0.9.7 veya daha yeni bir sürüme yükseltme
- Python veya kendi uygulamalarınız: aşağıdaki veren kuruluşların her ikisini de kabul edin:
https://accounts.google.com
accounts.google.com
GoogleAuthUtil sunucusu yetkilendirme kodu akışından taşıma
Sunucu yetkilendirme kodu almak için GoogleAuthUtil
kullanıyorsanız
yeni Oturum Açma API'si yetkilendirme kodu akışı.
Örneğin, Android kodunuz aşağıdaki örneğe benziyorsa migrate:
Örnekte, sunucu yetkilendirme kodu istekleri oauth2:server:client_id
+
için scope
parametresi olarak web sunucunuzun istemci kimliğini
GoogleAuthUtil.getToken
sesli arama (oauth2:server:client_id:9414861317621.apps.googleusercontent.com
).
Yeni Oturum Açma API'si yetkilendirme kodu akışı aşağıdaki avantajları sağlar:
- Tek dokunuşla daha kolay oturum açma deneyimi
- Aşağıdaki taşıma rehberini uygularsanız sunucunuz bir kimlik jetonu alabilir kimlik doğrulama kodu değişimini gerçekleştirdiğinizde kullanıcının profil bilgilerini içerir
Yeni yetkilendirme kodu akışına geçmek için aşağıdaki değişiklikleri yapın:
Android istemci tarafı
- İstekte bulunursanız
GET_ACCOUNTS
(Kişiler) iznini kaldırın GoogleAuthUtil
,Plus.API
ve diğer düğmeleri kullanarakAccountPicker.newChooseAccountIntent()
veyaAccountManager.newChooseAccountIntent()
-Auth.GOOGLE_SIGN_IN_API
GoogleSignInOptions.Builder.requestServerAuthCode(...)
yapılandırması.
Sunucu tarafı
Geçerli kodunuzu koruyun ancak https://oauth2.googleapis.com/token
kodunu belirtin.
oluşturulurken, jeton sunucusu uç noktası olarak
GoogleAuthorizationCodeTokenRequest
nesnesini tanımlayın, böylece kimlik jetonu alabilirsiniz
başka bir tanesine gerek kalmadan kullanıcının e-posta adresi, kullanıcı kimliği ve profil bilgileriyle
ağ çağrısı. Bu uç nokta tamamen geriye dönük uyumludur ve aşağıdaki kod
hem eski hem de yeni Android cihazınızdan alınan sunucu kimlik doğrulama kodları için çalışır
göz önünde bulundurun.
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); ...