Авторизованные клиентские вызовы JS API с библиотекой Google gapi с существующим токеном доступа?

Некоторая предыстория

Я использую Meteor как платформу для приложений, а для аутентификации пользователей использую пакет accounts-google. Использование пакетов учетных записей очень удобно, поскольку оно выполняет всю грязную работу по получению токенов доступа, их обновлению по истечении срока действия и т. Д. Однако мне нужно было больше информации профиля о пользователе, чем то, что заполняется в объекте Meteor.user().

С Facebook я смог легко загрузить их клиентскую JS-библиотеку и сделать запросы api графиков, используя Meteor.user().services.facebook.accessToken и следуя документации по API:

https://developers.facebook.com/docs/javascript/reference/FB.api

Моя проблема

При ссылке на Google JavaScript API в документации указывается, что при выполнении вызовов API запрос включает токен доступа автоматически, но только при использовании gapi для обработки запросов авторизации.

https://developers.google.com/api-client-library/javascript/features/authentication#MakingtheAPIrequest

Это бесполезно, если вы полагаетесь на сторонний пакет авторизации (или когда ваше приложение обрабатывает аутентификацию Google не на стороне клиента).

Есть ли способ использовать существующий токен доступа в запросах с использованием методов библиотеки gapi.client?


person marc    schedule 01.03.2015    source источник


Ответы (1)


Я долго боролся с этим, и мне удалось найти похожий вопрос, размещенный здесь:

Google OAuth2 - использование токена доступа, созданного извне - с Клиентская библиотека JS

Однако этот человек уже знал, что нужно делать, но не знал, как сделать соответствующий звонок, поэтому мне повезло, что я его нашел.

Решение

Чтобы сделать gapi запросы с использованием существующего токена доступа, необходимо вызвать:

    gapi.auth.setToken({
        access_token: "token_string"
    });

перед тем, как сделать запрос клиента. В Meteor вы можете использовать Meteor.user().services.google.accessToken вместо "token_string" выше.

Документация по методу находится здесь:

https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiauthsetToken

person marc    schedule 01.03.2015