Использовать аутентификацию контекста функции Callablle в Firebase с другими API Google - PullRequest
0 голосов
/ 12 октября 2019

У меня есть вызываемая функция, в которой я хочу получить доступ к API Sheets, но не с учетной записью службы, я хочу выдать себя за пользователя. Проблема в том, что я не хочу отправлять клиенту URL авторизации. Пользователь уже выполнил вход в приложение firebase с помощью google на стороне клиента и дал согласие на разрешение всех необходимых мне областей (включая область действия Sheets API), поэтому мне было интересно, возможно ли использовать объект auth в параметре contextвызываемой функции для аутентификации с другими API от имени пользователя.

function exportSpreadsheets(data, context)
{
    const {google} = require('googleapis');

    //How do I create an OAuth2 object I can use to access the API
    //without having to send the user an authentication link?
    //Maybe using the data in context.auth.token?
    const auth = new google.auth.OAuth2();

    const sheets = google.sheets({version: 'v4', auth});

    sheets.spreadsheets.create()
    .then(x =>
    {
        console.log(x);
    });
}

Я пробовал приведенный выше код, и он не работает. Я немного пытаюсь понять весь процесс OAuth2.

Спасибо!

1 Ответ

0 голосов
/ 21 октября 2019

Я понял это! Правильный способ сделать это - отправить клиенту токен доступа в качестве параметра функции и использовать его для доступа к API от имени пользователя. Например:

function exportSpreadsheet(data, context)
{
    const oauth = new google.auth.OAuth2({
        clientId: '<your-apps-client-id>',
        clientSecret: '<your-apps-client-secret>',
    });
    oauth.setCredentials(data);
    const sheets = google.sheets({version: 'v4', auth: oauth});

    //Use the API

Кроме того, вы должны отправить токен доступа провайдера (в данном случае это Google), а не токен доступа Firebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...