Я пытаюсь создать приложение, в котором пользователь может локально воспроизводить контент, сохраненный на диске Google, а также разыгрывать его.
В соответствии с документами Google Drive Документы для разработчиков Google Drive , янужно сделать http-запрос следующим образом:
GET https://www.googleapis.com/drive/v3/files/0B9jNhSvVjoIVM3dKcGRKRmVIOVU?alt=media
Authorization: Bearer <ACCESS_TOKEN>
Для локального воспроизведения я использую exoplayer , который работает очень гладко, моя проблема заключается в том, когда я пытаюсь привести контент.
Мне кажется, что я прочитал все документы, относящиеся к приложениям отправителей и получателей, с сайта разработчиков Google Cast Документы для разработчиков Google Cast , и я не смог привести контент.
Приемное приложение получает 403 error , когда я отлаживаю, потому что оно требует аутентификации. 403 Ошибка в браузере .
Эта ошибка вызвана тем, что я не могу установить заголовки HTTP " Авторизация: канал-носитель ACCESS_TOKEN ", причина в том, что нет опциинасколько я знаю, чтобы установить заголовки HTTP.
Я даже открыл тикет проблемы в Google Здесь , где я просил включить эту функцию в общее приложение приемника, так что мыне нужно размещать приложение получателя только для этой функции.И они ответили на это
". Вам нужно будет написать приемник и предоставить обработчик в translationConfig.manifestRequestHandler, который добавляет заголовок. Вам нужно будет использовать поле customData запроса на загрузку, чтобы передать свой токен.или любые другие данные."
Итак, я попытался сделать то, что мне сказали, и сейчас приложение отправителя отправляет токен авторизации в приложение получателя, но я застрялтокен для заголовка запроса.
Вот текущий код из приложения получателя.
const context = cast.framework.CastReceiverContext.getInstance();
const castOptions = new cast.framework.CastReceiverOptions();
const playerManager = context.getPlayerManager();
let playbackConfig = (Object.assign(new cast.framework.PlaybackConfig(), playerManager.getPlaybackConfig()));
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => {
console.log("token: ", request.media.customData.token);
playbackConfig.manifestRequestHandler = requestInfo => {
requestInfo.withCredentials = true;
requestInfo.headers = {};
requestInfo.headers['Authorization'] = request.media.customData.token;
};
return request;
});
castOptions.playbackConfig = playbackConfig;
context.start(castOptions);
Было бы здорово, если кто-нибудь может мне помочь или направить меня.Спасибо