将Firebase Callablle函数上下文身份验证与其他Google API一起使用

时间:2019-10-12 15:32:21

标签: firebase firebase-authentication google-cloud-functions google-sheets-api

我有一个可调用的函数,我想在其中访问Sheets API,但没有服务帐户,我想模拟用户。问题是我不想向客户端发送授权URL。用户已经在客户端与Google一起登录了Firebase应用,并同意了我需要的所有范围(包括Sheets API范围)的权限,因此我想知道是否可以在context参数中使用auth对象代表用户与其他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 :(得分:0)

我知道了! 正确的方法是将客户端的访问令牌作为参数发送给函数,并使用它代表用户访问API。像这样:

def compare_lists(list1, list2):
    if not list1 or not list2:
        return False
    else:
        return all(x1 == x2 for x1, x2 in zip(list1, list2))

此外,您还必须发送提供商的访问令牌(在本例中为Google),而不是Firebase的访问令牌。