Согласно документации Google, любой владелец учетной записи Google также является владельцем учетной записи Youtube, но он может не быть «связанным», т.е. иметь канал Youtube. Приложение может загружать видео только в связанную учетную запись.
Если вы используете AccountManager для получения списка владельцев учетных записей Google, в этот момент вы не можете сказать, связан ли кто-либо из них или нет. Мне нужен способ узнать, связано ли это.
Кажется, нет прямого вызова API Youtube, чтобы узнать, есть ли у учетной записи канал (связан).
Возможно, для этого можно было бы переназначить следующий фрагмент кода:
List<String> scopes = new ArrayList<>();
scopes.add( SendToGoogleUtils."https://www.googleapis.com/auth/youtube.upload" );
if( ( googleAccountCredential = SendToGoogleUtils.getGoogleAccountCredential(
mContext, accountYoutube.name, scopes ) ) == null) return;
String gAToken = googleAccountCredential.getToken();
youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, googleAccountCredential)
.setApplicationName(getString(R.string.tourmaker_app_name))
.build();
YouTube.Channels.List channelRequest = youtube.channels().list("contentDetails");
channelRequest.setMine(true);
channelRequest.setFields("items/contentDetails,nextPageToken,pageInfo");
ChannelListResponse channelResult = channelRequest.execute();
Если accountYoutube (см. строку кода 4) связан, этот код работает нормально и переходит к более позднему коду, который загружает.
Если accountYoutube не связан, оператор execute создает исключение GoogleJsonResponseException:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden { «код»: 403, «ошибки»: [ { «домен»: «глобальный», «сообщение»: «Недостаточное разрешение», «причина»: «insufficientPermissions» } ], «сообщение» : «Недостаточно разрешений» }
Таким образом, этот код сообщает вам, связана ли учетная запись Youtube. Будет ли такой код разумным способом определить, есть ли у аккаунта Youtube канал (связан)?
Я подозреваю, потому что это исключение кажется побочным эффектом, на который я не могу положиться.
Я ищу лучший способ определить, связан ли аккаунт с аккаунтом YouTube. Я бы использовал код в подходящее время, чтобы представить пользователю только связанные учетные записи.
Кто-нибудь знает надежный способ сделать это?