INVALID_IDP_RESPONSE:提供的身份验证凭证格式错误或已过期

时间:2019-10-19 05:17:18

标签: firebase google-apps-script google-cloud-functions google-oauth

我正在使用电子表格作为Firebase应用程序的管理界面,在这里我可以授权该应用程序上的一些用户交易。电子表格利用Google Apps脚本和云功能

我现在可以在电子表格和后端之间来回发送数据,现在,下一件事是使用自定义声明设置为true的admin属性,将对云功能HTTP URL的访问锁定到授权用户。

为此,我希望发送从Google Apps脚本API(ScriptApp.getOAuthToken())获取的用户的OAuth令牌作为请求有效内容的一部分,并使用Firebase Rest API方法https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API_KEY]获取用户的ID令牌和其他凭据来验证和授权管理员用户和交易。

function check_plan_name() {
    .......
    if (plan_name === 'Daily') {
        ........
        $('.selected_days_namesVal').empty();
        $('.selected_plan_daysVal').empty();
        $('input[name="plan_days_selector"]').each(function() {
            this.checked = false;
        });
        $('input[name="day_name_selector"]').each(function() {
            this.checked = false;
        });
        $('.selected_plan_days').attr('value', '');
        $('.selected_days_names').attr('value', '');
    }
}

问题是我不断收到 INVALID_IDP_RESPONSE :提供的身份验证凭证格式错误或已过期。我不确定为什么会这样,将不胜感激

1 个答案:

答案 0 :(得分:0)

我终于明白了。我现在正在做的是将问题中所述的OAuth令牌发送到后端,并以access_token: OAuth token的有效负载向token info端点发出POST请求。这将返回用户电子邮件,email_verified,expiry_date等的响应。然后,使用该用户电子邮件,我可以在Firebase Admin SDK上获得userRecord,它公开了customClaims属性。详细了解解决方案here