nodejs googlephotos не удается загрузить, поскольку сеанс аутентификации не определен

У меня есть код, основанный на примерах, приведенных в документации googlephotos. Я в основном просто взял код, предоставленный как есть, и изменил его, чтобы заполнить идентификатор моего клиента, секреты и т. Д. Сгенерировать URL-адрес, который затем вставляю в свой браузер, и после нажатия на него, чтобы авторизовать мое приложение, я копирую код, который он мне дает. и использовать его для создания нового объекта Photos.

Я попытался настроить свои области как:

const scopes = [
    Photos.Scopes.READ_ONLY,
    Photos.Scopes.SHARING,
    Photos.Scopes.APPEND_ONLY
];

Но я также пробовал:

const scopes = [
    Photos.Scopes.APPEND_ONLY
];

и

const scopes = [
    Photos.Scopes.READ_AND_APPEND
];

Я могу вернуть токены аутентификации, которые я могу использовать для создания нового объекта Photos. Я пытаюсь загрузить что-то вроде этого:

const response = await photos.mediaItems.upload("", "test.mp4", "/home/michael/test/test.mp4", "Test Upload");

Я получаю эту ошибку вместе с трассировкой стека, которая кажется бесполезной:

(узел: 13122) UnhandledPromiseRejectionWarning: StatusCodeError: 401 - "{\n \"код\": 16,\n \"сообщение\": \"Сеанс аутентификации не определен.\"\n}"

Я предоставил разрешение на добавление, и это все, что должно быть для правильной авторизации, но все равно не получается! Что я здесь делаю неправильно?


person Michael    schedule 24.04.2020    source источник


Ответы (1)


В документации не указано, какой именно «auth_token» вы должны передать, просто говорится:

const photos = new Photos(your_google_auth_token);

не определяя, что такое your_google_auth_token и откуда оно взялось. В собственной документации Google для API загрузки просто указано oauth2-token, что не соответствует действительности. помогает понять, каким должно быть это значение.

В том же коде для получения токенов просто сказано:

const {tokens} = await oauth2Client.getToken(code)

// The token from above can be used to initialize the photos library.

Эта ошибка возникает, когда вы наивно подключаете полученные токены к конструктору следующим образом:

const photos = new Photos(auth_token)

Вместо этого вам нужно подключить поле access_token токенов следующим образом:

const photos = new Photos(auth_token.access_token)
person Michael    schedule 24.04.2020