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ş Cihazlarında Oturum Açma

Kullanıcıların, internete bağlı TV gibi kısıtlı 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österir. Daha sonra 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şme 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 ölçütleri karşılayan bir cihazda çalışması gerekir:

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

İstemci kimliği ve istemci gizli anahtarı alma

Google'ın oturum açma uç noktalarına istekte bulunmak için uygulamanızın OAuth 2.0 istemci kimliği ve istemci gizli anahtarı olmalıdır.

Projenizin istemci kimliğini ve istemci gizli anahtarı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. Daha önce yapmadıysanız Kimlik bilgileri oluştur ve OAuth istemci kimliği oluştur'u tıklayıp 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ği'ni bulun. Ayrıntılar için istemci 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.

Kullanıcı kodu ve doğrulama URL'si edinme

Kullanıcılar Google Hesabı kullanarak oturum açma isteğinde bulunduklarında, OAuth 2.0 cihaz uç noktasına (https://oauth2.googleapis.com/device/code) bir HTTP POST isteği göndererek kullanıcı kodu ve doğrulama URL'si elde edersiniz. İstemci kimliğinizi ve istekle birlikte ihtiyaç duyduğunuz kapsamların listesini ekleyin. Kullanıcılarla yalnızca Google hesaplarıyla oturum açmak istiyorsanız yalnızca profile ve email kapsamlarını isteyin. Kullanıcılar adına desteklenen bir API'yi çağırmak istiyorsanız profile ve email kapsamlarının yanı sıra gerekli kapsamları da isteyin.

Aşağıda kullanıcı kodu için örnek bir istek verilmiştir:

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 kullanılarak:

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

Yanıt, 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österir ve aynı zamanda, kullanıcı oturum açana veya expires_in tarafından belirtilene kadar belirtilen interval öğesindeki oturum açma uç noktasını sorgular.

Kullanıcı kodunu ve doğrulama URL'sini göster

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çıp kullanıcı kodunu girmesini isteyin.

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

  • user_code, 15 W boyutlu karakteri işleyebilecek kadar geniş bir alanda gösterilmelidir.
  • verification_url, 40 karakter uzunluğunda bir URL dizesini işlemek için geniş bir alanda gösterilmelidir.

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

user_code dizesini görüntülediğinizde, kodun biçimi gelecekte değişirse uygulamanız bozulabileceği için dizeyi hiçbir şekilde (büyük/küçük harf değiştirme veya başka biçimlendirme karakterleri eklemek gibi) değiştirmeyin.

İsterseniz verification_url dizesini, şemayı görüntüleme amaçlı URL'den çıkararak değiştirebilirsiniz. Bunu yaparsanız uygulamanızın hem "http" hem de "https" çeşidinin işlenebileceğ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:

Kod girerek cihaz bağlama

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

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.

Kimlik jetonu alma ve jetonu yenileme

Uygulamanız kullanıcı kodunu ve doğrulama URL'sini gösterdikten sonra, jeton uç noktasını (https://oauth2.googleapis.com/token) cihaz uç noktasından aldığınız cihaz koduyla yoklamaya başlayın. Jeton uç noktasını, interval değeri ile belirtilen aralıklarla saniye cinsinden sorgulayın.

Aşağıda örnek bir istek verilmiştir:

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 kullanılarak:

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şmayan bir hızda tekrarlamalıdır. Uygulamanız çok hızlı bir şekilde yoklanırsa yanıt aşağıdaki gibidir:

{
  "error" : "slow_down"
}

Kullanıcı oturum açıp uygulamanıza istediğiniz kapsamlar için erişim izni verdikten sonra, uygulamanızın bir sonraki isteğine verilen yanıt bir kimlik jetonu, bir erişim jetonu ve bir yenileme jetonu içerir:

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

Bu yanıt alındıktan sonra, uygulamanız oturum açmış olan kullanıcıyla ilgili temel profil bilgilerini almak için kimlik jetonunu çözebilir veya sunucuyla güvenli bir şekilde kimlik doğrulama 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'lerini çağırmak için erişim jetonu kullanabilir.

Kimlik ve erişim jetonlarının kullanım ömrü sınırlıdır. Kullanıcının jetonlardan uzun süre boyunca oturum açmasını sağlamak için yenileme jetonunu depolayın ve yeni jeton istemek için kullanın.

Kimlik jetonundan kullanıcı profili bilgilerini alma

Kimlik jetonunun kodunu herhangi bir JWT kod çözme kitaplığıyla oturum açarak oturum açmış olan kullanıcı hakkındaki profil bilgilerine ulaşabilirsiniz. Ö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

  • Kullanıcıların bir kimlik jetonunun kullanım ömründen daha uzun süre oturum açmasını sağlamak için Erişim jetonunu yenileme bölümünü inceleyin.
  • Bir arka uç sunucusu ile kimlik doğrulaması yapmanız gerekiyorsa güvenli bir şekilde doğrulama hakkında bilgi için Arka uç sunucusu ile kimlik doğrulama bölümüne bakın.