Я искал документацию Google и пример кода, а также переполнение стека для решения этой проблемы, и хотя я видел множество людей, сталкивающихся с такими же симптомами, я не нашел ничего, что помогло бы в моем конкретном случае .
В основном я пытаюсь выполнить рабочий процесс авторизации для Google Drive REST API, и хотя я дохожу до страницы выбора аккаунта Google, когда он возвращается к моей работе с вызовами, я всегда вижу результат RESULT_CANCELED (т. е. 0) вместо RESULT_OK (т. е. -1), независимо от того, какая учетная запись выбрана.
Я проверил, чтобы убедиться, что учетные данные правильно установлены на консоли разработчика Google - и они ранее работали с аутентификацией через ныне не существующую библиотеку CloudRail. (Насколько я могу судить, теперь с помощью Google Sign-In вы не предоставляете какой-либо идентификатор клиента и т. Д .: все это обрабатывается на конце Google, когда оно совпадает с именем вашего пакета.)
Вот мой звонок для аутентификации:
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(DriveScopes.DRIVE))
.build();
mSignInClient = GoogleSignIn.getClient(activity, signInOptions);
А вот вид деятельности onActivityResult()
:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
switch (requestCode) {
case REQUEST_GOOGLE_SIGN_IN:
if (resultCode == Activity.RESULT_OK && resultData != null) {
/*** NEVER GET HERE ***/
handleSignInResult(this, resultData);
}
else {
/*** ALWAYS GET HERE ***/
Log.e(TAG, String.format("Unable to complete Google sign-in (resultCode: %d)", resultCode));
}
}
break;
}
super.onActivityResult(requestCode, resultCode, resultData);
}
Я предполагаю, что это тот случай, когда я делал что-то явно глупое и неправильное - и надеялся, что просто напечатать вопрос поможет мне понять, что это такое, но этого еще не произошло.