Uyarı: Bu veriler Google Kullanıcı Verileri Politikası kapsamında sağlanır. Lütfen politikayı inceleyin ve politikaya uyun. Bunu yapmazsanız proje veya hesap askıya alınabilir.

TV'lerde ve Sınırlı Giriş Aygıtlarında 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ı bir web tarayıcısında oturum açma URL'sini açar, kodu girer ve uygulamaya kullanıcının oturum açma bilgilerine erişmesi için izin 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 ölçütleri karşılayan bir cihazda çalışması gerekir:

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

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

Google'ın oturum açma uç noktalarına istekte bulunmak için uygulamanızın bir OAuth 2.0 istemci kimliğine ve istemci sırrına ihtiyacı var.

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 bilgisini seçin veya Kimlik Bilgileri sayfasını açın.
  2. Henüz yapmadıysanız, Kimlik bilgilerini oluştur > OAuth istemci kimliği öğelerini tıklatarak 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 arayın. Ayrıntılar için müşteri kimliğini tıklayın.

Yeni bir müşteri 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 edinin

Bir kullanıcı bir Google Hesabı kullanarak oturum açmak istediğinde, OAuth 2.0 cihaz uç noktasına bir HTTP POST isteği göndererek bir kullanıcı kodu ve doğrulama URL'si alırsınız, https://oauth2.googleapis.com/device/code . İstemci kimliğinizi ve ihtiyacınız olan kapsamların bir listesini talebe ekleyin. Kullanıcıların yalnızca Google hesaplarıyla oturum açmasını 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 talep etmek istiyorsanız, profile ve email kapsamlarına ek olarak gerekli kapsamları isteyin.

Aşağıda, bir kullanıcı kodu için örnek bir istek bulunmaktadı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 kullanıcı_kodu ve verification_url değerlerini görüntüler ve aynı zamanda, kullanıcı oturum expires_in user_code belirtilen süre 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 uç noktasından bir kullanıcı kodu ve doğrulama URL'si aldıktan sonra bunları görüntüleyin ve kullanıcıdan URL'yi açmasını ve kullanıcı kodunu girmesini isteyin.

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

  • user_code , 15 W boyutundaki karakterleri işleyecek 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 yazdırılabilir herhangi bir karakter 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ştirmek veya başka biçimlendirme karakterleri eklemek 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" türevlerini işleyebildiğinden emin olun. verification_url dizesini başka şekilde 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'lerini çağırmak için bir erişim jetonu ve yeni jetonlar almak için bir yenileme jetonu alabilir.

Bir kimlik belirteci alın ve belirteci yenileyin

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

Aşağıdaki örnek bir istektir:

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 aşağıdaki gibidir:

{
  "error" : "authorization_pending"
}

Uygulamanız bu istekleri interval değerini aşmayacak bir oranda tekrarlamalıdır. Uygulamanız çok hızlı anket yapıyorsa yanıt aşağıdaki gibidir:

{
  "error" : "slow_down"
}

Kullanıcı oturum açıp uygulamanıza istediğiniz kapsamlara erişim izni verdiğinde, uygulamanızın bir sonraki isteğine verilen yanıt bir kimlik belirteci, bir erişim belirteci ve bir yenileme belirteci 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 belirtecinin kodunu çözebilir veya sunucuyla güvenli bir şekilde kimlik doğrulaması yapmak için kimlik belirtecini uygulamanızın arka uç sunucusuna gönderebilir. Ayrıca uygulamanız, kullanıcının yetkilendirdiği Google API'lerini çağırmak için erişim belirtecini kullanabilir.

Kimlik ve erişim belirteçlerinin sınırlı ömürleri vardır. Kullanıcının belirteçlerin kullanım süresinin ötesinde oturum açmasını sağlamak için yenileme belirtecini saklayın ve yeni belirteçler istemek için kullanın.

Kimlik belirtecinden kullanıcı profili bilgilerini alın

Herhangi bir JWT kod çözme kitaplığı ile kimlik belirtecinin kodunu çözerek oturum açmış kullanıcı hakkında profil bilgilerini alabilirsiniz. Örneğin, Auth0 jwt-kod çözme 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