GDK Glassware için kimlik doğrulama

GDK Glassware'inizin bir web hizmetinde kullanıcıların kimliğini doğrulaması gerekiyorsa GDK, kullanıcının bir şey yaptığında kimlik bilgilerini girmesine olanak tanıyan bir API ve Glassware uygulamanızı yükleyecekler.

Bu API'yi kullanarak tutarlı bir kullanıcı deneyimini yaşayabilir ve kendi uygulamanızı kullanmanın özel kimlik doğrulama şemalarını kullanabilirsiniz.

Google API hizmet hesabı oluşturma

Kimlik doğrulama doğru şekilde ayarlandığında web uygulamanızın arka ucu Mirror API'sını kullanarak kullanıcıların Glass'a hesap bilgilerini gönder hizmetinizle kimlik doğrulamasından sonra yeniden gönderin.

Bu API'ye erişmek için bir Google API projesi oluşturun ve Bir "hizmet hesabı" için istemci kimliği oluşturmak ("web uygulaması" değildir). Ölçüt bir hizmet hesabı kullanıyorsanız, kullanıcıların kimlik bilgilerini Glass'a aktarması için uygulama izni istiyor ve hem OAuth izinleri sayfası hem de kendi kimlik doğrulamanız görüntülenir tıklayın.

Bu hesabı oluşturmak için:

  1. Google Developers Console'a gidin.
  2. Proje Oluştur düğmesini tıklayın ve istenen bilgileri girin.
  3. Projeniz oluşturulduktan sonra, başvurabileceğiniz Proje Numarasını not edin. ihtiyacınız olacak.
  4. API'ler ve auth yerine APIs'i (API'ler) tıklayın ve Google Mirror API'yi etkinleştirin. belirleneceğini konuşacağız.
  5. API'ler ve auth, ardından Credentials'ı ve ardından Create New Client'ı tıklayın" Kimliği. Yeni bir OAuth 2.0 oluşturmak için Hizmet hesabı etiketli kutuyu işaretleyin istemci kimliğini girin.
  6. Özel anahtarın indirilmekte olduğunu bildiren bir pop-up pencere gösterilir ve size bu özel anahtarın şifresini verir. Bu pencereyi kapattıktan sonra, bu gizli dosyayı indiremezsiniz tuşuna basın veya şifreye tekrar bakın. Kaybolurlarsa yeni bir bir.
  7. Hizmet hesabı e-posta adresini not edin. Bu e-posta adresinin olması için gerekenler yapmanız gerekir.

Glassware'iniz hakkında meta veri sağlama

Glassware'inizi göndermeye hazır olduğunuzda, ekleyebilirsiniz. Bu işlem, Glassware'inizi şu şekilde ayarlayabilmemizi sağlar: kimlik doğrulamasının doğru olması gerekir.

  • Kullanıcıların yönlendirildiği kimlik doğrulama URL'niz MyGlass'ta Glassware'inizi açıyorlar.
  • Account type (hesap türü) ( Glass cihazda Android AccountManager API'leri için)
  • AndroidManifest.xml cihazınızdaki uygulamanızın paket adı
  • Oluşturduğunuz projenin sayısal Google API proje kimliği üzerinde
  • MyGlass'a yüklenecek APK'dır. Test için yalnızca şu bilgileri sağlamanız gerekir: bu APK'yı bir kez kullandığınızda, ilk indirme işlemini gerçekleştirebilirsiniz. MyGlass'tan açılmış; Sonrasında, yerel olarak iterasyon yapıp hata ayıklayabilirsiniz cihazınızdaki APK'nın üzerine yazarak. Bu APK'nın şunları karşılaması gerektiğini unutmayın: şu kriterlere uygun olmalıdır:
    • Zipline hizalı olmalıdır.
    • Paket adında veya özel imzalamada herhangi bir değişiklik yapmamalısınız. anahtarı (Android paket yöneticisi, yeni sürüme geçirmeye izin vermez) herhangi bir değişiklik söz konusu değilse).
    • 50 megabayttan küçük olmalıdır.
    • GDK'nın en son sürümü kullanılarak derlenmelidir.

Kimlik doğrulama akışını uygulama

Aşağıdaki şemada, GDK Cam Yazılımı:

Kimlik doğrulama akışını uygulamak için:

  1. Kullanıcılar MyGlass'ta Glassware'inizi etkinleştirdiğinde yönlendirilirler. kimlik doğrulama URL'nize eklemeniz gerekir. Bu istekler, userToken:

  2. Kullanıcı, kimlik doğrulama sayfanıza kimlik bilgilerini girer.

  3. Sunucunuz kullanıcının kimlik bilgilerini doğrular. Kimlik bilgileri geçerliyse mirror.accounts.insert yöntemine Mirror API çağrısında bulunmak. Bu yöntem bir özellik olarak https://www.googleapis.com/auth/glass.thirdpartyauth kapsam Hizmet nesnesini yansıt. Ham verileri kullanarak bu API çağrısını yapma örnekleri HTTP veya Java, hesap oluşturma örneklerinde gösterilmiştir.

    Aşağıda sağladığınız parametreler ve istek gövdesi aynı değeri temsil eder AccountManager adlı operatöre sağlayacağınız hesabı doğrudan cihazda oluşturuyordu.

    Mülk adı Değer Açıklama
    features[] dize listesi Özelliklerin listesi (bkz. AccountManager.hasFeatures) bulabilirsiniz.
    password dize Hesap şifresi (bkz. AccountManager.getPassword) bulabilirsiniz. Önerilerimiz: Kullanıcının gerçek şifresini şurada saklamadığınızdan e-posta adresini uzun ömürlü özel veriler yenileme jetonu gibi olabilir.
    userData[] nesne listesi Hesapla ilişkilendirilmiş bir veya daha fazla kullanıcı verisi çifti (bkz. AccountManager.getUserData) bulabilirsiniz.
    userData[].key dize Belirli bir kullanıcı verileri anahtar/değer çiftiyle ilişkili anahtar eşlemeye devam edin.
    userData[].value dize Belirli bir kullanıcı verileri anahtar/değer çiftiyle ilişkili değer eşlemeye devam edin.
    authTokens[] nesne listesi Hesapla ilişkilendirilmiş bir veya daha fazla yetkilendirme jetonu (bkz. AccountManager.getAuthToken) bulabilirsiniz.
    authTokens[].type dize Yetkilendirme jetonunun türü.
    authTokens[].authToken dize Yetkilendirme jetonu.
  4. Mirror API, mirror.account.insert isteğini aldıktan sonra hesabı, kullanıcının Glass cihazlarına artık erişebilirsiniz. (AccountManager sınıfını kullanarak)

Kullanıcı dostu bir kimlik doğrulama akışı uygulamak için şu yönergeleri izleyin:

  • Akışınızı mobil cihazlar için optimize edin.
  • Akışınızın bir kapsamı varsa ve kullanıcı bunları iptal ederse bu durumu iyi tasarlanmış bir mesajının gösterilmesini sağlar.
  • İstediğiniz kapsamların gerçekten Glassware'inizde kullanıldığından emin olun.
  • Bir kullanıcı hesabı bağlanabiliyorsa onu bağladığınızdan emin olun.
  • Mümkün olduğunda kullanıcı verileri buluta yedeklenmelidir.
ziyaret edin.

Glassware kimlik doğrulamasında tutarlılığı korumak için aşağıdakilerden birini kullanın: kimlik doğrulama akışları:

Yansıtma veya karma (hesap olmadan)

  1. MyGlass'ta etkinleştirildikten sonra kimlik doğrulama URL'niz bir pop-up pencerede açılır.
  2. Bu işlem, kullanıcıyı doğrudan kabul edeceği kapsamlara gönderir.
  3. Kullanıcı kapsamları kabul ettikten veya iptal ettikten sonra pop-up'ı kapatın.

Bir hesapla yansıtın

  1. MyGlass'ta etkinleştirildikten sonra kimlik doğrulama URL'niz bir pop-up pencerede açılır.
    • Kullanıcı hizmetinizde zaten oturum açmışsa kullanıcıyı doğrudan gönderin kapsam kapsayabilir.
    • Kullanıcı oturum açmamışsa oturum açma alanlarını gösterin ve oturum açmasına izin verin ve sonra kapsamlara gönderebilirsiniz.
    • Kullanıcının hesabı yoksa oluşturmak için bir bağlantı sağlayın hesap. Kullanıcılar, adımlarından biridir.
  2. Kullanıcı kapsamları kabul eder.
    • Glassware'inizin yapılandırılabilir ayarları varsa, kullanıcıyı Makul varsayılanların seçili olduğu ayarlar sayfası
    • Glassware'inizin yapılandırılabilir ayarları yoksa kullanıcıyı şuraya gönderin: onay sayfası. Ek yapılandırma yoksa pop-up'ı kapatın gereklidir.

Bir hesapla karma

  1. MyGlass'ta etkinleştirildikten sonra kimlik doğrulama URL'niz bir pop-up pencerede açılır.
    • Kullanıcı hizmetinizde zaten oturum açmışsa kullanıcıyı doğrudan gönderin kapsam kapsayabilir.
    • Kullanıcı oturum açmamışsa oturum açma alanlarını gösterin ve oturum açmasına izin verin ve sonra kapsamlara gönderebilirsiniz.
    • Kullanıcının hesabı yoksa hesap oluşturmak için bir bağlantı sağlayın.
  2. Kullanıcı kapsamları kabul eder.
  3. GDK hesabını eklemek için Mirror API'ye istek gönderin.
    • Kullanıcıyı, makul varsayılan ayarlarla ayarlar sayfasına yönlendirin.
    • Kullanıcıya bir onay sayfası gönderin. Başka ek öğe yoksa pop-up'ı kapatın yapılandırma gerekli.

Bir hesap ve özel kapsamlarla yansıtın veya karma kullanın

  1. MyGlass'ta etkinleştirildikten sonra kimlik doğrulama URL'niz bir pop-up pencerede açılır.
    • Kullanıcı hizmetinizde zaten oturum açmışsa kullanıcıyı dahili kapsamlar
    • Kullanıcı oturum açmamışsa oturum açma alanlarını gösterin ve oturum açmasına izin verin ve dahili kapsamlarınıza gönderin.
    • Kullanıcının hesabı yoksa hesap oluşturmak için bir bağlantı sağlayın.
  2. Kullanıcı özel kapsamlarınızı kabul ettiğinde kullanıcıyı Google'ın kapsamlarına gönderin.
  3. GDK hesabını eklemek için Mirror API'ye istek gönderin.
    • Kullanıcıyı, makul varsayılan ayarlarla ayarlar sayfasına yönlendirin.
    • Kullanıcıya bir onay sayfası gönderin. Başka ek öğe yoksa pop-up'ı kapatın yapılandırma gerekli.

Android/iPhone uygulamasıyla yansıtın veya hibrit kullanın

  1. MyGlass'ta etkinleştirildikten sonra kimlik doğrulama URL'niz bir pop-up pencerede açılır.
  2. Bu işlem, kullanıcıyı doğrudan kabul edeceği kapsamlara gönderir.
  3. Kullanıcı kapsamları kabul ettikten sonra:
    • Kullanıcıda tamamlayıcı uygulama varsa ve kimliği doğrulanmışsa pop-up'ı kapatın. penceresini kapatın.
    • Değilse, kullanıcıyı söz konusu uygulamayı indirmeye yönlendiren bir geçiş sayfasına yönlendirin. Google Play Store veya iOS Store'daki
  4. Uygulamayı yükleyip kimlik doğrulaması yaptıktan sonra pop-up pencereyi kapatın

GDK ve hesap yok

Bu akış için gereken tek şey MyGlass'ta Glassware'i açmaktır.

bir hesapla GDK

  1. MyGlass'ta etkinleştirildikten sonra kimlik doğrulama URL'niz bir pop-up pencerede açılır.
    • Kullanıcı hizmetinizde zaten oturum açmışsa kullanıcıyı onay ekranına geri dönün.
    • Kullanıcı oturum açmamışsa oturum açma alanlarını görüntüleyin ve şunları yapmasına izin verin: ve sonra onları onay ekranına gönderin.
    • Kullanıcının hesabı yoksa hesap oluşturmak için bir bağlantı sağlayın.
  2. Kullanıcı kapsamları kabul eder.
  3. GDK hesabını eklemek için Mirror API'ye istek gönderin.
  4. Onay ekranını gösterin ve bir süre boyunca gösterdikten sonra ekranı kapatın. teslim etmek anlamına gelir.

Hesap oluşturma örnekleri

İstemci kitaplıklarını kullanma Mirror API'si için kullanılabilir. Bu da mirror.accounts.insert aramasını sağlar bu adımları kolayca uygulayabilirsiniz.

Ham HTTP örneği

Aşağıdaki örnekte yalnızca isteğin URL'si ve beklenen JSON gövdesi. Bir hizmet adına ham HTTP isteklerinde bulunma oldukça karmaşıktır (bkz. Sunucudan Sunucuya Uygulamalar için OAuth 2.0 Kullanma bulabilirsiniz), bu nedenle Google API'lerimizden birini kullanmanızı istemci kitaplıkları e-tablolarda tutabilirsiniz.

İstek yöntemi ve URL:

POST https://www.googleapis.com/mirror/v1/accounts/{userToken}/com.example.myapp/username%40email.com

İstek içeriği:

{
    "features": ["a", "b", "c"],
    "userData": [
        { "key": "realName", "value": "Rusty Shackleford" },
        { "key": "foo", "value": "bar" }
    ],
    "authTokens": [
        { "type": "your_token_type", "authToken": "zT419Ma3X2pBr0L..." }
    ]
}

İstek URL'sindeki {userToken} öğesini, aktarılan jetonla değiştirin Adım 1'deki kimlik doğrulama URL'nizi, Kimlik doğrulama akışını uygulama.

Java Örneği

Bu örnekte, çağrı yapmak için Java istemci kitaplığının nasıl kullanılacağı gösterilmektedir mirror.accounts.insert.

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.Account;
import com.google.api.services.mirror.model.AuthToken;
import com.google.common.collect.Lists;
...

/** Email of the Service Account */
private static final String SERVICE_ACCOUNT_EMAIL =
    "<some-id>@developer.gserviceaccount.com";

/** Path to the Service Account's Private Key file */
private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH =
    "/path/to/<public_key_fingerprint>-privatekey.p12";

/** The account type, usually based on your company or app's package. */
private static final String ACCOUNT_TYPE = "com.example.myapp";

/** The Mirror API scopes needed to access the API. */
private static final String MIRROR_ACCOUNT_SCOPES =
    "https://www.googleapis.com/auth/glass.thirdpartyauth";

/**
 * Build and returns a Mirror service object authorized with the service accounts.
 *
 * @return Mirror service object that is ready to make requests.
 */
public static Mirror getMirrorService() throws GeneralSecurityException,
    IOException, URISyntaxException {
  HttpTransport httpTransport = new NetHttpTransport();
  JacksonFactory jsonFactory = new JacksonFactory();
  GoogleCredential credential = new GoogleCredential.Builder()
      .setTransport(httpTransport)
      .setJsonFactory(jsonFactory)
      .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
      .setServiceAccountScopes(MIRROR_ACCOUNT_SCOPES)
      .setServiceAccountPrivateKeyFromP12File(
          new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
      .build();
  Mirror service = new Mirror.Builder(httpTransport, jsonFactory, null)
      .setHttpRequestInitializer(credential).build();
  return service;
}

/**
 * Creates an account and causes it to be synced up with the user's Glass.
 * This example only supports one auth token; modify it if you need to add
 * more than one, or to add features, user data, or the password field.
 *
 * @param mirror the service returned by getMirrorService()
 * @param userToken the user token sent to your auth callback URL
 * @param accountName the account name for this particular user
 * @param authTokenType the type of the auth token (chosen by you)
 * @param authToken the auth token
 */
public static void createAccount(Mirror mirror, String userToken, String accountName,
    String authTokenType, String authToken) {
  try {
    Account account = new Account();
    List<AuthToken> authTokens = Lists.newArrayList(
        new AuthToken().setType(authTokenType).setAuthToken(authToken));
    account.setAuthTokens(authTokens);
    mirror.accounts().insert(
        userToken, ACCOUNT_TYPE, accountName, account).execute();
  } catch (IOException e) {
    e.printStackTrace();
  }
}

Glass'ta Hesapları Alma

Account alınıyor ve kullanılıyor nesneleri Google Glass'taki standart Android AccountManager.

  1. AndroidManifest.xml dosyanızda aşağıdaki manifest izinlerini beyan edin:

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    
  2. Glassware'in hesaplarını alın:

    AccountManager accountManager = AccountManager.get(mContext);
    // Use your Glassware's account type.
    Account[] accounts = accountManager.getAccountsByType("com.example");
    
    // Pick an account from the list of returned accounts.
    
  3. Account uygulamasından bir yetkilendirme jetonu alın:

    // Your auth token type.
    final String AUTH_TOKEN_TYPE = "oauth2:https://www.example.com/auth/login";
    
    accountManager.getAuthToken(account, AUTH_TOKEN_TYPE, null, activity, new AccountManagerCallback<Bundle>() {
        public void run(AccountManagerFuture<Bundle> future) {
            try {
                String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN);
                // Use the token.
            } catch (Exception e) {
                // Handle exception.
            }
        }
    }, null);