Po wdrożeniu protokołu OAuth 2.0 możesz opcjonalnie skonfigurować App Flip na podstawie protokołu OAuth, dzięki czemu użytkownicy Android będą mogli szybciej połączyć swoje konta w systemie uwierzytelniania z kontami Google. Z tych sekcji dowiesz się, jak zaprojektować i zaimplementować działanie App Flip w akcji 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
- 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:
Wyświetl Politykę prywatności Google. Umieść na ekranie zgody link do Polityki prywatności Google.
Dane do udostępnienia. Przekaż użytkownikom jasne i zwięzłe informacje, jakich danych Google wymaga i dlaczego.
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.
Możliwość anulowania. Zapewnij użytkownikom możliwość powrotu lub anulowania subskrypcji, jeśli nie zdecydują się na połączenie.
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.
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.
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.

Konfigurowanie odwrócenia aplikacji opartej na protokole OAuth
W poniższych sekcjach opisano wymagania wstępne dla technologii App Flip opartej na protokole OAuth i sposób konfigurowania projektu App Flip w konsoli Actions.
Utwórz akcję inteligentnego domu i skonfiguruj serwer OAuth 2.0
Zanim skonfigurujesz Flip aplikacji, musisz wykonać te czynności:
- Skonfiguruj serwer OAuth 2.0. Więcej informacji o konfigurowaniu serwera OAuth znajdziesz w tym artykule.
- Tworzenie działania Aby utworzyć akcję, wykonaj instrukcje z artykułu Tworzenie projektu w Actions.
Konfigurowanie odwracania aplikacji w konsoli Actions
Z sekcji poniżej dowiesz się, jak skonfigurować odwrócenie aplikacji w konsoli Actions.
- Wypełnij wszystkie pola w sekcji Informacje o kliencie OAuth. Jeśli funkcja odwrócenia aplikacji nie jest obsługiwana, jako zastępcza funkcja jest używany standardowy protokół OAuth.
- W sekcji Używaj aplikacji do łączenia kont (opcjonalnie) zaznacz Włącz na Androidzie.
- Wypełnij te pola:
- Identyfikator aplikacji. Identyfikator aplikacji to unikalny identyfikator ustawiany dla aplikacji.
- Podpis aplikacji. Aplikacje na Androida muszą być podpisane za pomocą certyfikatu klucza publicznego, aby można je było zainstalować. Informacje 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.
- Jeśli chcesz opcjonalnie skonfigurować klienta, dodaj zakresy i kliknij Dodaj zakres w sekcji Skonfiguruj klienta (opcjonalnie).
- Kliknij Zapisz.
Wdrażanie funkcji Odwrócenie aplikacji w aplikacjach na Androida
Aby zaimplementować odwrócenie aplikacji, musisz zmodyfikować kod autoryzacji użytkowników 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:
- Aplikacja Google sprawdza, czy jest zainstalowana na urządzeniu, używając nazwy pakietu.
- Aplikacja Google sprawdza podpis w pakiecie, aby upewnić się, że zainstalowana aplikacja jest prawidłowa.
- 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.
- Aplikacja weryfikuje, czy żądanie pochodzi z aplikacji Google. W tym celu musi sprawdzić podpis pakietu i podany identyfikator klienta.
- Aplikacja żąda kodu autoryzacji z serwera OAuth 2.0. Na końcu tego procesu zwraca kod autoryzacji lub błąd do aplikacji Google.
- 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:
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>
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 }
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... } }
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()
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 Googleclient_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 odwrócenia aplikacji na urządzeniu
Po utworzeniu akcji i skonfigurowaniu odwracania aplikacji w konsoli i w aplikacji możesz przetestować ją. Aby przetestować Flip aplikacji, możesz użyć aplikacji Asystent Google lub Google Home.
Aby przetestować funkcję Odwróć aplikację z poziomu aplikacji Asystent, wykonaj te czynności:
- Otwórz konsolę Actions i wybierz projekt.
- Kliknij Testuj w górnym menu.
- Aktywuj proces łączenia kont w aplikacji Asystent:
- Otwórz aplikację Asystent Google.
- Kliknij Ustawienia.
- Na karcie Asystent kliknij Sterowanie domem.
- Kliknij Dodaj(+).
- Wybierz działanie z listy dostawców. Będzie poprzedzony ciągiem „[test]” na liście. Gdy wybierzesz działanie z listy [test], powinno ono otworzyć Twoją aplikację.
- Sprawdź, czy aplikacja została uruchomiona, i rozpocznij testowanie procesu autoryzacji.
Aby przetestować funkcję App Flip z aplikacji Google Home, wykonaj te czynności:
- Otwórz konsolę Actions i wybierz projekt.
- Kliknij Testuj w górnym menu.
- Aktywuj proces łączenia kont w aplikacji Google Home:
- Otwórz aplikację Google Home.
- Kliknij przycisk +.
- Kliknij Skonfiguruj urządzenie.
- Kliknij Masz już skonfigurowane urządzenia?.
- Wybierz działanie inteligentnego domu z listy dostawców. Będzie poprzedzony ciągiem „[test]” na liście. Gdy wybierzesz działanie z listy [test], powinno ono otworzyć Twoją aplikację.
- Sprawdź, czy aplikacja została uruchomiona, i rozpocznij testowanie procesu autoryzacji.