API данных Youtube с OAuth2.0 на Android

Я пытаюсь использовать API YouTubeData с аутентификацией OAuth 2.0 на Android, и я немного борюсь с ним.

Я много искал в Интернете, но для реализации Android не так много.

Прежде всего, мне непонятно, что лучший способ получить токен OAuth. В документе они предполагают, что для Android лучше получить его с помощью сервиса Google Play. Это правда? Если да, это должно быть довольно тривиально после этого руководства: https://developers.google.com/android/guides/http-auth . Но в этот момент у меня будет токен в объекте String . Как я должен использовать его с API-интерфейсом YouTubeData? Должен ли я разместить его где-нибудь в YouTube.Builder ?

 YouTube youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() { public void initialize(HttpRequest request) throws IOException { } }).setApplicationName("AppName").build(); 

Если да, то кто-нибудь знает, где?

Поиск в StackOverflow я столкнулся с этим вопросом: что делать после получения Auth Token – API для Android Youtube . Здесь Ибрагим Улукая говорит, что лучше использовать GoogleAccountCredential . Для того, что я понял ( доступ к API Google – GoogleAccountCredential.usingOAuth2 vs. GoogleAuthUtil.getToken () ), версия GoogleAccountCredential для GoogleAccountCredential должна использовать GoogleAuthUtil предоставленную из GoogleAuthUtil сервисов Google Play, поэтому было бы очень полезно упростить процесс. Я рассмотрел образец проекта, предложенный Ибрагимом Улукая ( https://github.com/youtube/yt-direct-lite-android ), и я реализовал все так же, как и он. Но это не работает очень хорошо, поскольку я получаю это сообщение только в logcat: «Была ошибка IO: com.google.android.gms.auth.UserRecoverableAuthException: NeedPermission: null».
(Обратите внимание, что я включил все необходимые API в консоли Google и создал идентификатор клиента для своего приложения)

На данный момент я немного потерян.
Следует ли мне напрямую использовать GoogleAuthUtil из GoogleAuthUtil Google Play? В этом случае после получения маркера как String как я могу использовать его с API-интерфейсами YouTubeData?
Или я должен использовать GoogleAccountCredential ? В этом случае кто-то знает, как я могу решить ошибку «NeedPersmission: null»?

—- РЕДАКТИРОВАТЬ:

Подробно о том, что пытается сделать мое приложение: будучи моим первым опытом работы с такими API-интерфейсами, я начал с простых вещей: извлекать видеоинформацию и затем воспроизводить эти видео без какой-либо аутентификации пользователей. Мне удалось сделать это довольно легко, но для моего приложения мне нужно получить доступ к пользовательским данным, в частности пользователи должны иметь возможность любить и комментировать видео. Поэтому я начал внедрять OAuth2, пытаясь выполнить те же самые точные запросы, которые я делал раньше (получить информацию о видео).

Вау. Документация по этому вопросу очень запутанна. Полное раскрытие информации, я не разработчик Android, но я разработчик Java, который работал с приложениями Google и OAuth2.

Google Play или Google Play? Во-первых, службы Google Play будут доступны только на устройствах Android с установленными сервисами Google Play (а не на устройствах OUYA, Amazon и т. Д.). Google заявляет, что « библиотека Google Play даст вам наилучшую производительность и опыт ».

Существует множество дискуссий (например, здесь , здесь ) от реальных разработчиков Android, в которых перечислены различные достоинства Google Play, а также другие методы. Я бы предположил, что, как только вы сможете заставить приложение работать с использованием одного метода, тогда вам будет достаточно легко изменить, если вы этого желаете.

В большинстве примеров кода используется учетная запись Android AccountManager (Задачи и календари являются любимыми примерами), поэтому я буду показывать.

Ваш примерный код выглядит так, как будто это может быть простой поиск, я бы предположил, что многие из взаимодействий API YouTube не требуют OAuth2, в другом коде я видел эту пустую реализацию HttpRequestInitializer, называемую функцией no-op. (Например, GeolocationSearch.java ).

Похоже, вы хотите получить доступ к функциям API YouTube, которым необходимы учетные данные учетной записи. Вы можете сделать что-то подобное этому календарю Android Calendar ( CalendarSampleActivity.java ), за исключением YouTube, как пример ответа отсюда .

 // Google Accounts credential = GoogleAccountCredential.usingOAuth2(this, YouTubeScopes.YOUTUBE, YouTubeScopes.YOUTUBE_READONLY); SharedPreferences settings = getPreferences(Context.MODE_PRIVATE); credential.setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null)); // YouTube client service = new com.google.api.services.youtube.YouTube.Builder(transport, jsonFactory, credential) .setApplicationName("Google-YouTubeAndroidSample/1.0").build(); 

Надеюсь, это поможет.

В методе инициализации HttpRequestInitializer вы можете установить заголовки запроса. Согласно документу Googles для Oath2 для устройств https://developers.google.com/identity/protocols/OAuth2ForDevices, если у вас есть токен доступа, вы должны поместить его в HTTP-заголовок Authorization: Bearer.

 YouTube youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() { public void initialize(HttpRequest request) throws IOException { request.put("Authorization", "Bearer " + yourAccessTokenString); } }).setApplicationName("AppName").build(); 

Помните пробел после носителя в значении заголовка авторизации

Intereting Posts
Как узнать состояние ввода в XMPP openfire с помощью Smack Jquery ajax GET запрос выполняется дважды Android как получить PNR статус PNR без кода Как оживить перевод View «Не удалось инициализировать SDK App Engine на пути (пути)» на eclipse 4.2.2 с использованием Mac OSX Mountain Lion Android ksoap вызов xmlpullparser исключение Как загружать два или несколько файлов одновременно в Android с помощью NanoHTTPD? WebGL не работает в PhoneGap Android KitKat Android Progaurd – проблема подключения к Интернету после экспорта приложения Google API для Документов Google, запрашивающих список документов – 400 Bad Request Каков правильный способ отображения нескольких типов строк в режиме просмотра с учетом реакции? Вопросы по разработке и выпуску ключевых хэшей для Facebook SDK для Android Скрыть предварительный просмотр клавиатуры клавиатуры Android Теги html, такие как <b> <i> <a>, не работают с HTML.fromHtml () при отправке в ACTION_SEND Выбор цвета не работает с отменой и повтором