Я получаю ошибку Invalid Credentials в результате следующего модульного теста:
List<String> scopes = new ArrayList<String>();
scopes.add(YouTubeScopes.YOUTUBE_READONLY);
try {
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(this, scopes);
credential.setSelectedAccountName(account.name);
YouTube.Builder builder = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential).setApplicationName("TestApp");
YouTube youtube = builder.build();
YouTube.Channels.List channelRequest = youtube.channels().list("contentDetails");
channelRequest.setMine(true);
ChannelListResponse channelResult = channelRequest.execute();
List<Channel> channelsList = channelResult.getItems();
for(Channel channel : channelsList) {
// Do things
}
} catch (UserRecoverableAuthIOException e) {
e.printStackTrace();
startActivityForResult(e.getIntent(), RESULT_REQUEST_AUTH);
} catch (IOException e) {
e.printStackTrace();
}
При использовании этого кода я сначала получаю UserRecoverableAuthIOException, как и ожидалось. После того, как авторизация была дана, я получаю следующую ошибку:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
{
"code" : 401,
"errors" : [ {
"domain" : "global",
"location" : "Authorization",
"locationType" : "header",
"message" : "Invalid Credentials",
"reason" : "authError"
} ],
"message" : "Invalid Credentials"
}
В мою консоль API Google добавлено следующее:
- Идентификатор клиента для Android-приложения
- Идентификатор клиента для веб-приложения
- Ключ для браузерных приложений
Я также использую Google Drive SDK, который отлично работает.
В моем списке API у меня есть:
- API Диска
- SDK Диска
- Google+ API
- API данных YouTube v3