Google, Siyah topluluklar için ırksal eşitliği geliştirmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

TV'ler ve Cihazlar için Google ile Oturum Açma

Kullanıcıların, İnternet'e bağlı TV'ler gibi sınırlı giriş özelliklerine sahip cihazlarda Google hesaplarıyla uygulamanızda oturum açmasına izin verebilirsiniz.

Uygulama, kullanıcıya kısa bir kod ve oturum açma URL'si görüntüler. Ardından, kullanıcı oturum açma URL'sini bir web tarayıcısında açar, kodu girer ve uygulamaya kullanıcının oturum açma bilgilerine erişim izni verir. Son olarak, uygulama onay alır ve kullanıcı oturum açar.

Bu oturum açma akışını kullanmak için, uygulamanın aşağıdaki kriterleri karşılayan bir cihazda çalışması gerekir:

  • Cihaz, kullanıcıya talimatlarla birlikte 40 karakterlik bir URL ve 15 karakterlik bir kullanıcı kodu görüntüleyebilmelidir.
  • Cihaz internete bağlı olmalıdır.

Bir müşteri kimliği ve müşteri sırrı alın

Uygulamanızın, Google'ın oturum açma uç noktalarına istekte bulunabilmesi için bir OAuth 2.0 istemci kimliğine ve istemci sırrına ihtiyacı vardır.

Projenizin müşteri kimliğini ve müşteri sırrını bulmak için aşağıdakileri yapın:

  1. Mevcut bir OAuth 2.0 kimlik bilgilerini seçin veya Kimlik Bilgileri sayfasını açın.
  2. Henüz yapmadıysanız, Kimlik bilgileri oluştur> OAuth istemci kimliği'ni tıklayarak ve kimlik bilgilerini oluşturmak için gereken bilgileri sağlayarak projenizin OAuth 2.0 kimlik bilgilerini oluşturun .
  3. OAuth 2.0 istemci kimlikleri bölümünde İstemci Kimliğini bulun . Ayrıntılar için müşteri kimliğini tıklayın.

Yeni bir istemci kimliği oluşturuyorsanız, TV'ler ve Sınırlı Giriş cihazları uygulama türünü seçin.

Bir kullanıcı kodu ve doğrulama URL'si alın

Bir kullanıcı bir Google Hesabı kullanarak oturum açmak istediğinde, OAuth 2.0 cihaz uç noktasına ( https://oauth2.googleapis.com/device/code bir HTTP POST isteği göndererek bir kullanıcı kodu ve doğrulama URL'si alırsınız. İstemci kimliğinizi ve taleple birlikte ihtiyacınız olan kapsamların bir listesini ekleyin. Kullanıcıları yalnızca Google hesaplarıyla oturum açmak istiyorsanız, yalnızca profile ve email kapsamlarını isteyin; veya kullanıcılar adına desteklenen bir API'yi çağırmak için izin istemek istiyorsanız, profile ve email kapsamlarına ek olarak gerekli kapsamları da isteyin.

Aşağıda bir kullanıcı kodu için örnek bir istek yer almaktadır:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&scope=email%20profile

curl kullanma:

curl -d "client_id=CLIENT_ID&scope=email profile" https://oauth2.googleapis.com/device/code

Yanıt bir JSON nesnesi olarak döndürülür:

{
  "device_code" : "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code" : "GQVQ-JKEC",
  "verification_url" : "https://www.google.com/device",
  "expires_in" : 1800,
  "interval" : 5
}

Uygulamanız, kullanıcıya user_code ve verification_url değerlerini görüntüler ve aynı zamanda, kullanıcı oturum expires_in veya expires_in belirtilen interval geçene kadar belirtilen interval oturum açma uç noktasını yoklar.

Kullanıcı kodunu ve doğrulama URL'sini görüntüleyin

Cihazın uç noktasından bir kullanıcı kodu ve doğrulama URL'si aldıktan sonra, bunları görüntüleyin ve kullanıcıya URL'yi açıp kullanıcı kodunu girmesini söyleyin.

verification_url ve user_code değerleri değiştirilebilir. Kullanıcı arayüzünüzü aşağıdaki sınırlamaları kaldırabilecek şekilde tasarlayın:

  • user_code , 15 W büyüklüğündeki karakterleri işleyebilecek kadar geniş bir alanda görüntülenmelidir.
  • verification_url , 40 karakter uzunluğundaki bir URL dizesini işleyecek kadar geniş bir alanda görüntülenmelidir.

Her iki dize de US-ASCII karakter kümesinden herhangi bir yazdırılabilir karakteri içerebilir.

user_code dizesini görüntülediğinizde, dizeyi hiçbir şekilde değiştirmeyin (büyük / küçük harf değişimi veya diğer biçimlendirme karakterleri ekleme gibi), çünkü gelecekte kodun biçimi değişirse uygulamanız bozulabilir.

İsterseniz görüntüleme amacıyla URL'den şemayı çıkararak verification_url dizesini değiştirebilirsiniz. Bunu yaparsanız, uygulamanızın hem "http" hem de "https" varyantlarını işleyebildiğinden emin olun. verification_url dizesini başka türlü değiştirmeyin.

Kullanıcı doğrulama URL'sine gittiğinde aşağıdakine benzer bir sayfa görür:

Bir kod girerek bir cihaz bağlayın

Kullanıcı, kullanıcı kodunu girdikten sonra, Google oturum açma sitesi aşağıdakine benzer bir izin ekranı sunar:

Bir cihaz istemcisi için örnek izin ekranı

Kullanıcı İzin Ver'i tıklarsa, uygulamanız kullanıcıyı tanımlamak için bir kimlik jetonu, Google API'larını çağırmak için bir erişim jetonu ve yeni jetonlar almak için bir yenileme jetonu alabilir.

Bir kimlik jetonu ve yenileme jetonu edinin

Uygulamanız kullanıcı kodunu ve doğrulama URL'sini görüntüledikten sonra, cihaz uç noktasından aldığınız cihaz koduyla jeton uç noktasını ( https://oauth2.googleapis.com/token ) sorgulamaya başlayın. Belirteç uç noktasını, interval değeriyle belirtilen saniye cinsinden interval yoklayın.

Aşağıdaki örnek bir taleptir:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0

curl kullanma:

curl -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0" https://oauth2.googleapis.com/token

Kullanıcı isteği henüz onaylamadıysa, yanıt şu şekildedir:

{
  "error" : "authorization_pending"
}

Uygulamanız, bu istekleri interval değerini aşmayan bir hızda tekrarlamalıdır. Uygulamanız çok hızlı bir şekilde anket yaparsa, yanıt şu şekildedir:

{
  "error" : "slow_down"
}

Kullanıcı oturum açtığında ve uygulamanıza talep ettiğiniz kapsamlara erişim izni verdiğinde, uygulamanızın sonraki isteğine verilen yanıt bir kimlik jetonu, erişim jetonu ve yenileme jetonunu içerir:

{
  "access_token" : "ya29.AHES6ZSuY8f6WFLswSv0HZLP2J4cCvFSj-8GiZM0Pr6cgXU",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "1/551G1yXUqgkDGnkfFk6ZbjMMMDIMxo3JFc8lY8CAR-Q",
  "id_token": "eyJhbGciOiJSUzI..."
}

Bu yanıtı aldıktan sonra, uygulamanız oturum açmış kullanıcı hakkında temel profil bilgilerini almak için kimlik jetonunun kodunu çözebilir veya sunucuyla güvenli bir şekilde kimlik doğrulaması yapmak için kimlik jetonunu uygulamanızın arka uç sunucusuna gönderebilir. Ayrıca uygulamanız, kullanıcının yetkilendirdiği Google API'larını çağırmak için erişim jetonunu kullanabilir.

Kimlik ve erişim belirteçlerinin sınırlı yaşam süreleri vardır. Kullanıcının jetonların yaşam sürelerinin ötesinde oturum açmasını sağlamak için, yenileme jetonunu saklayın ve yeni jeton istemek için kullanın.

Kimlik belirtecinden kullanıcı profili bilgilerini alın

Herhangi bir JWT kod çözme kitaplığıyla kimlik jetonunun kodunu çözerek oturum açmış kullanıcı hakkında profil bilgileri alabilirsiniz. Örneğin, Auth0 jwt-decode JavaScript kitaplığını kullanarak:

var user_profile = jwt_decode(id_token);

// The "sub" field is available on all ID tokens. This value is unique for each
// Google account and can be used to identify the user. (But do not send this
// value to your server; instead, send the whole ID token so its authenticity
// can be verified.)
var user_id = user_profile["sub"];

// These values are available when you request the "profile" and "email" scopes.
var user_email = user_profile["email"];
var email_verified = user_profile["email_verified"];
var user_name = user_profile["name"];
var user_photo_url = user_profile["picture"];
var user_given_name = user_profile["given_name"];
var user_family_name = user_profile["family_name"];
var user_locale = user_profile["locale"];

Daha fazla bilgi