Как Google Войти для Android работает без URI перенаправления? - PullRequest
0 голосов
/ 02 апреля 2020

Библиотека входа в Google на Android работает без указания URI перенаправления. Почему это так? В какую конечную точку Google отправляет код доступа после входа пользователя? И как он перенаправляет пользователя обратно в приложение?

Спасибо.

1 Ответ

0 голосов
/ 02 апреля 2020

Теперь я вижу, что URI перенаправления - это фактически само приложение, использующее URI, который указывает на страницу приложения, а не на какой-либо веб-сайт. URI перенаправления можно настроить в приложении Android, используя следующую информацию: https://developer.android.com/training/app-links/deep-linking. Я многому научился из этого видео на YouTube: https://www.youtube.com/watch?v=j3OTZ62AkNU

Как только он перенаправляет пользователя обратно в приложение, библиотека входа в Google обрабатывает получение токена и информацию о пользователе.

com.googleusercontent.apps.123:redirect_uri_path
com.example.app is the reverse DNS notation of a domain under your control. The custom scheme must contain a period to be valid.
com.googleusercontent.apps.123 is the reverse DNS notation of the client ID.
redirect_uri_path is an optional path component, such as /oauth2redirect. Note that the path should begin with a single slash, which is different from regular HTTP URLs.

^ Скопировано из документации. 123 - это идентификатор вашего клиента. И com.googleusercontent.apps является фиксированным, а не переменным. Установка этого параметра в качестве URI перенаправления в вашем приложении гарантирует, что Google перенаправит пользователя обратно в ваше приложение, где библиотека будет обрабатывать получение токена доступа и профиля пользователя и т. Д. c. Вам нужно иметь фильтр намерений в своем манифесте. xml (или следующее в Xamarin), чтобы получить uri.

[IntentFilter(
    new[] { Intent.ActionView },
    Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable },
    DataSchemes = new[] { "com.googleusercontent.apps.123" },
    DataPath = "/oauth2redirect")]

Его эквивалент в Манифесте. xml:

<activity android:label="ActivityCustomUrlSchemeInterceptor" android:launchMode="singleTop" android:noHistory="true" android:name="crc640d96480bfe206cdf.ActivityCustomUrlSchemeInterceptor">
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:path="/oauth2redirect" />
    <data android:scheme="com.googleusercontent.apps.123" />
  </intent-filter>
</activity>
...