Witamy w Google Home Developer Center – nowym miejscu, z którego dowiesz się, jak tworzyć inteligentne działania domowe. Uwaga: nadal będziesz tworzyć działania w konsoli Actions.

App Flip na Androida

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Po wdrożeniu OAuth 2.0 możesz opcjonalnie skonfigurować App Flip oparty na OAuth, co pozwoli użytkownikom Android na szybsze połączenie kont w systemie uwierzytelniania z ich kontami Google. W poniższych sekcjach znajdziesz informacje o tym, jak zaprojektować i wdrożyć działanie App Flip dla działania smart home.

Wskazówki dotyczące wyglądu

W tej sekcji opisano wymagania projektowe i zalecenia dotyczące ekranu zgody połączenia łącza aplikacji. Gdy Google wywoła aplikację, wyświetli się ekran zgody.

Wymagania

  1. Musisz poinformować, że konto użytkownika jest łączone z Google, a nie z konkretną usługą Google, na przykład z Google Home lub Asystentem Google.

Rekomendacje

Zalecamy wykonanie tych czynności:

  1. Wyświetl Politykę prywatności Google. Umieść na ekranie zgody link do Polityki prywatności Google.

  2. Dane do udostępnienia. Przekaż użytkownikom jasne i zwięzłe informacje, jakich danych Google wymaga i dlaczego.

  3. Wyraźne wezwanie do działania Na ekranie zgody umieść jasne wezwanie do działania, np. „Zgadzam się i połączę”. Dzieje się tak, ponieważ użytkownicy muszą wiedzieć, jakie dane muszą udostępnić Google, aby połączyć swoje konta.

  4. Możliwość anulowania. Zapewnij użytkownikom możliwość powrotu lub anulowania subskrypcji, jeśli nie zdecydują się na połączenie.

  5. Możliwość odłączenia Zaoferuj użytkownikom mechanizm odłączenia kont, np. adresu URL ustawień konta na Twojej platformie. Możesz też dodać link do konta Google, na którym użytkownicy mogą zarządzać swoim połączonym kontem.

  6. Możliwość zmiany konta użytkownika. Zasugeruj użytkownikom metodę zmiany konta. Jest to szczególnie przydatne, gdy użytkownicy mają zwykle kilka kont.

    • Jeśli użytkownik musi zamknąć ekran zgody, aby przełączyć konta, wyślij błąd Google do wielokrotnego użytku, aby użytkownik mógł zalogować się na żądane konto za pomocą połączenia OAuth i procesu logowania.
  7. Logo. Wyświetlaj logo firmy na ekranie zgody. Skorzystaj ze wskazówek dotyczących stylu, by umieścić logo. Jeśli chcesz też wyświetlać logo Google, przeczytaj artykuł Logo i znaki towarowe.

Ten wynik pokazuje przykładowy ekran zgody z wywołaniami poszczególnych wymagań i zaleceń, które należy zastosować podczas projektowania ekranu zgody użytkownika.
Rysunek 1. Wskazówki dotyczące projektowania ekranu zgody na łączenie kont

Konfiguracja aplikacji opartej na OAuth

Poniżej znajdziesz wymagania wstępne dla aplikacji App Flip opartej na OAuth i sposób konfigurowania projektu App Flip w konsoli Actions.

Tworzenie działania inteligentnego domu i konfigurowanie serwera OAuth 2.0

Zanim skonfigurujesz Flip aplikacji, musisz wykonać te czynności:

Konfigurowanie odwracania aplikacji w konsoli Actions

W tej sekcji dowiesz się, jak skonfigurować App Flip w konsoli Actions.

  1. Wypełnij wszystkie pola w sekcji Informacje o kliencie OAuth. Jeśli funkcja App Flip nie jest obsługiwana, zamiast niej używany jest zwykły protokół OAuth.
  2. W sekcji Używaj aplikacji do łączenia kont (opcjonalne) zaznacz Włącz na Androidzie.
  3. Wypełnij te pola:
    • Identyfikator aplikacji. Identyfikator aplikacji to unikalny identyfikator ustawiany dla Twojej aplikacji.
    • Podpis aplikacji. Aby można było instalować aplikacje na Androida, muszą one być podpisane certyfikatem publicznym. Więcej informacji o uzyskiwaniu podpisu aplikacji znajdziesz w artykule Uwierzytelnianie klienta.
    • Zamiar autoryzacji. W tym polu wpisz ciąg znaków określający działanie intencji.
  4. Jeśli chcesz opcjonalnie skonfigurować klienta, dodaj zakresy i kliknij Dodaj zakres w sekcji Skonfiguruj klienta (opcjonalnie).
  5. Kliknij Zapisz.

Wdrażanie funkcji Odwróć aplikację w aplikacjach na Androida

Aby wdrożyć Flip, musisz zmodyfikować kod autoryzacji użytkownika w swojej aplikacji, aby zaakceptować precyzyjny link od Google.

Oparte na OAuth uwierzytelnienie w ramach App Flip wstawia aplikację na Androida do procesu łączenia kont Google. Tradycyjny proces łączenia kont wymaga od użytkownika wpisania danych logowania w przeglądarce. Użycie App Flip blokuje logowanie użytkownika do aplikacji na Androida, co umożliwia korzystanie z istniejących autoryzacji. Jeśli użytkownik jest zalogowany w aplikacji, nie musi ponownie wpisywać swoich danych logowania, aby połączyć swoje konto. Zastosowanie minimalnej liczby zmian w kodzie aplikacji wymaga wdrożenia w niej pewnych zmian.

Z tego artykułu dowiesz się, jak zmodyfikować aplikację na Androida, aby obsługiwała Flip.

Wypróbuj fragment

Przykładowa aplikacja do łączenia aplikacji w App Flip demonstruje integrację kont zgodnych z App Flip na urządzeniach z Androidem. Możesz używać tej aplikacji do sprawdzania, jak odpowiedzieć na przychodzące odwrócone aplikacje z aplikacji mobilnych Google.

Przykładowa aplikacja jest wstępnie skonfigurowana tak, by zintegrować ją z narzędziem do testowania Flip aplikacji na Androida, którego można użyć do zweryfikowania integracji aplikacji na Androida z Odwróceniem aplikacji przed skonfigurowaniem połączenia konta z Google. Ta aplikacja symuluje intencję aktywowaną przez aplikacje mobilne Google po włączeniu tej funkcji.

Jak to działa

Aby przeprowadzić integrację App Flip, musisz wykonać te czynności:

  1. Aplikacja Google sprawdza, czy jest zainstalowana na urządzeniu, używając nazwy pakietu.
  2. Aplikacja Google sprawdza podpis w pakiecie, aby upewnić się, że zainstalowana aplikacja jest prawidłowa.
  3. Aplikacja Google tworzy intencję rozpoczynania wyznaczonej aktywności w Twojej aplikacji. Obejmuje ona dodatkowe dane wymagane do połączenia. Sprawdzamy też, czy Twoja aplikacja obsługuje App Flip, rozwiązując ten problem przez platformę Android.
  4. Aplikacja weryfikuje, czy żądanie pochodzi z aplikacji Google. W tym celu musi sprawdzić podpis pakietu i podany identyfikator klienta.
  5. Aplikacja żąda kodu autoryzacji z serwera OAuth 2.0. Na końcu tego procesu zwraca kod autoryzacji lub błąd do aplikacji Google.
  6. Aplikacja Google pobiera wynik i kończy łączenie konta. Po podaniu kodu autoryzacji wymiana tokena odbywa się między serwerami, tak samo jak w przypadku procesu łączenia się przez protokół OAuth w przeglądarce.

Zmodyfikuj aplikację na Androida, aby obsługiwała App Flip

Aby obsługiwać tę funkcję, wprowadź w aplikacji na Androida te zmiany:

  1. Do pliku AndroidManifest.xml dodaj ciąg <intent-filter> z ciągiem działań pasującym do wartości wpisanej w polu Intent Flip intencji.

    <activity android:name="AuthActivity">
      <!-- Handle the app flip intent -->
      <intent-filter>
        <action android:name="INTENT_ACTION_FROM_CONSOLE"/>
        <category android:name="android.intent.category.DEFAULT"/>
      </intent-filter>
    </activity>
    
  2. Sprawdź podpis aplikacji wywołującej.

    private fun verifyFingerprint(
            expectedPackage: String,
            expectedFingerprint: String,
            algorithm: String
    ): Boolean {
    
        callingActivity?.packageName?.let {
            if (expectedPackage == it) {
                val packageInfo =
                    packageManager.getPackageInfo(it, PackageManager.GET_SIGNATURES)
                val signatures = packageInfo.signatures
                val input = ByteArrayInputStream(signatures[0].toByteArray())
    
                val certificateFactory = CertificateFactory.getInstance("X509")
                val certificate =
                    certificateFactory.generateCertificate(input) as X509Certificate
                val md = MessageDigest.getInstance(algorithm)
                val publicKey = md.digest(certificate.encoded)
                val fingerprint = publicKey.joinToString(":") { "%02X".format(it) }
    
                return (expectedFingerprint == fingerprint)
            }
        }
        return false
    }
    
  3. Wyodrębnij identyfikator klienta z parametrów intencji i sprawdź, czy identyfikator klienta jest zgodny z oczekiwaną wartością.

    private const val EXPECTED_CLIENT = "<client-id-from-actions-console>"
    private const val EXPECTED_PACKAGE = "<google-app-package-name>"
    private const val EXPECTED_FINGERPRINT = "<google-app-signature>"
    private const val ALGORITHM = "SHA-256"
    ...
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        val clientId = intent.getStringExtra("CLIENT_ID")
    
        if (clientId == EXPECTED_CLIENT &&
            verifyFingerprint(EXPECTED_PACKAGE, EXPECTED_FINGERPRINT, ALGORITHM)) {
    
            // ...authorize the user...
        }
    }
    
  4. Gdy upoważni Cię autoryzacja, zwrócisz uzyskany kod autoryzacji do Google.

    // Successful result
    val data = Intent().apply {
        putExtra("AUTHORIZATION_CODE", authCode)
    }
    setResult(Activity.RESULT_OK, data)
    finish()
    
  5. Jeśli wystąpił błąd, wyświetl wynik błędu.

    // Error result
    val error = Intent().apply {
        putExtra("ERROR_TYPE", 1)
        putExtra("ERROR_CODE", 1)
        putExtra("ERROR_DESCRIPTION", "Invalid Request")
    }
    setResult(-2, error)
    finish()
    

Treść zamiaru wprowadzenia na rynek

Intencja Androida, która wprowadza Twoją aplikację, zawiera te pola:

  • CLIENT_ID (String): usługa Google client_id zarejestrowana w Twojej aplikacji.
  • SCOPE (String[]): lista żądanych zakresów.
  • REDIRECT_URI (String): przekierowanie.

Treść danych odpowiedzi

Dane zwracane do aplikacji Google są ustawiane w aplikacji przez wywołanie setResult(). Dane te obejmują:

  • AUTHORIZATION_CODE (String): wartość kodu autoryzacji.
  • resultCode (int): wskazuje sukces lub niepowodzenie procesu oraz przyjmuje jedną z tych wartości:
    • Activity.RESULT_OK: oznacza powodzenie; zwracany jest kod autoryzacji.
    • Activity.RESULT_CANCELLED: sygnał, że użytkownik anulował proces. W takim przypadku aplikacja Google spróbuje połączyć konto za pomocą adresu URL autoryzacji.
    • -2: oznacza, że wystąpił błąd. Poniżej znajdziesz informacje o różnych typach błędów.
  • ERROR_TYPE (int): typ błędu, który przyjmuje jedną z tych wartości:
    • 1: błąd do odzyskania: aplikacja Google spróbuje połączyć konto za pomocą adresu URL autoryzacji.
    • 2: nieodwracalny błąd: aplikacja Google przerywa proces łączenia kont.
    • 3: nieprawidłowe lub brakujące parametry żądania.
  • ERROR_CODE (int): liczba całkowita reprezentująca charakter błędu. Informacje o poszczególnych kodach błędów znajdziesz w tabeli kodów błędów.
  • ERROR_DESCRIPTION (String, opcjonalny): czytelny dla użytkowników komunikat o stanie zawierający błąd.

W przypadku resultCode == Activity.RESULT_OK oczekiwana jest wartość AUTHORIZATION_CODE. W pozostałych przypadkach wartość AUTHORIZATION_CODE musi być pusta. Jeśli zasada resultCode == -2, wartość ERROR_TYPE powinna być wypełniona.

Tabela kodów błędów

Poniższa tabela zawiera różne kody błędów oraz wskazuje, czy uda się je odzyskać:

Kod błędu Znaczenie Do odzyskania Nie do odzyskania
1 INVALID_REQUEST
2 NO_INTERNET_CONNECTION
3 OFFLINE_MODE_ACTIVE
4 CONNECTION_TIMEOUT
5 INTERNAL_ERROR
6 AUTHENTICATION_SERVICE_UNAVAILABLE
8 CLIENT_VERIFICATION_FAILED
9 INVALID_CLIENT
10 INVALID_APP_ID
11 INVALID_REQUEST
12 AUTHENTICATION_SERVICE_UNKNOWN_ERROR
13 AUTHENTICATION_DENIED_BY_USER
14 CANCELLED_BY_USER
15 FAILURE_OTHER
16 USER_AUTHENTICATION_FAILED

W przypadku wszystkich kodów błędów musisz zwrócić wyniki w polu setResult, aby mieć pewność, że wyświetli się odpowiedni kod zastępczy.

Testowanie odwracania aplikacji na urządzeniu

Po utworzeniu działania i skonfigurowaniu odwracania aplikacji w konsoli i w aplikacji możesz przetestować Flip aplikacji na urządzeniu mobilnym. Do testowania Flip możesz użyć aplikacji Asystent Google lub Google Home.

Aby przetestować Flip aplikacji z aplikacji Asystent, wykonaj te czynności:

  1. Otwórz Konsolę działań i wybierz projekt.
  2. Kliknij Testuj w górnym menu.
  3. Aktywuj proces łączenia kont w aplikacji Asystent:
    1. Otwórz aplikację Asystent Google.
    2. Kliknij Ustawienia.
    3. Na karcie Asystent kliknij Sterowanie domem.
    4. Kliknij Dodaj(+).
    5. Wybierz działanie z listy dostawców. Będzie on poprzedzony prefiksem „[test]”. Gdy wybierzesz działanie z listy [test], aplikacja powinna się otworzyć.
    6. Sprawdź, czy aplikacja została uruchomiona, i rozpocznij testowanie procesu autoryzacji.

Aby przetestować odwrócenie aplikacji w aplikacji Google Home, wykonaj te czynności:

  1. Otwórz Konsolę działań i wybierz projekt.
  2. Kliknij Testuj w górnym menu.
  3. Aktywuj proces łączenia kont w aplikacji Google Home:
    1. Otwórz aplikację Google Home.
    2. Kliknij przycisk +.
    3. Kliknij Skonfiguruj urządzenie.
    4. Kliknij Masz już skonfigurowane urządzenia?.
    5. Wybierz akcję inteligentnego domu z listy dostawców. Będzie on poprzedzony prefiksem „[test]”. Gdy wybierzesz działanie z listy [test], aplikacja powinna się otworzyć.
    6. Sprawdź, czy aplikacja została uruchomiona, i rozpocznij testowanie procesu autoryzacji.