Я выполнил лабораторию кода для аутентификации с помощью входа в Google. , пример приложения работает должным образом. Однако, когда я определяю свой собственный пакет приложения, после того, как пользователь разрешает разрешение приложения, браузер переходит на веб-сайт google.com вместо того, чтобы возвращаться к моей активности.
Я создал клиент OAuth 2.0 на консоли Google с типом Android и именем пакета com.x.y.
В моем манифесте:
<activity
android:name=".ui.backup.BackupActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@style/LibraryTheme">
<action android:name="com.x.y.HANDLE_AUTHORIZATION_RESPONSE"/>
<category android:name="android.intent.category.DEFAULT"/>
</activity>
<activity android:name="net.openid.appauth.RedirectUriReceiverActivity">
<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:scheme="com.x.y"/>
</intent-filter>
</activity>
И код
private void setupAuthorization() {
AuthorizationServiceConfiguration serviceConfiguration = new AuthorizationServiceConfiguration(
Uri.parse("https://accounts.google.com/o/oauth2/v2/auth") /* auth endpoint */,
Uri.parse("https://accounts.google.com/o/oauth2/token") /* token endpoint */
);
String clientId = "xxx.apps.googleusercontent.com";
Uri redirectUri = Uri.parse("com.x.y:/oauth2callback");
AuthorizationRequest.Builder builder = new AuthorizationRequest.Builder(
serviceConfiguration,
clientId,
AuthorizationRequest.RESPONSE_TYPE_CODE,
redirectUri
);
builder.setScopes("https://www.googleapis.com/auth/drive");
AuthorizationRequest request = builder.build();
AuthorizationService authorizationService = new AuthorizationService(this);
String action = "com.x.y.HANDLE_AUTHORIZATION_RESPONSE";
Intent postAuthorizationIntent = new Intent(action);
PendingIntent pendingIntent = PendingIntent.getActivity(this, request.hashCode(), postAuthorizationIntent, 0);
authorizationService.performAuthorizationRequest(request, pendingIntent);
}
Мне нужно использовать AppAuth для запроса "https://www.googleapis.com/auth/drive», аутентификация с помощью «Google Sign-in для Android» проще, но нет возможности предоставить это разрешение.