请求缺少必需的身份验证凭据。预期的OAuth 2访问令牌,登录cookie或其他有效的身份验证凭据

时间:2017-10-03 13:38:09

标签: google-sheets-api

我正在尝试更新Google表格值。

"请求具有无效的身份验证凭据。预期的OAuth 2访问令牌,登录cookie或其他有效的身份验证凭据。"

我想使用API​​密钥而不是outh 2.0

任何人都可以有任何建议。

2 个答案:

答案 0 :(得分:7)

不可能。您需要按照spreadsheets.values.batchUpdate

中的说明使用OAuth登录信息

您可以在授权部分看到它使用OAuth范围,因此它使用OAuth而不是API KEY:

<强>授权

需要以下OAuth范围之一:

report file XML
<?xml version="1.0" encoding="UTF-8" ?>
<!--<?xml-stylesheet type="text/css" href="view.css"?>-->
<openerp>
    <data>
        <report
            id="action_report_omega"
            model="omega.model"
            string="Report"
            report_type="qweb-pdf"
            file="model_x.report_omega_document"
            name="model_x.report_omega_document"
        />
    </data>
</openerp>

答案 1 :(得分:1)

我正面临类似的问题。

问题分析: 实际问题缺少范围。

解决方案: 可以通过以下方式添加范围:

  1. 使用启用api
  2. 添加oauth范围列表。列表在这里可用:https://developers.google.com/identity/protocols/googlescopes
  3. 从代码级别添加范围

详细信息在这里:

  1. 如果缺少任何作用域,则首先需要检查是否启用了相关的api。如果尚未启用,请先在Google控制台上启用api。

此处提供了过程:https://support.google.com/googleapi/answer/6158841?hl=en

  1. 启用api后,有时您将无法获得预期的作用域。如果需要任何复杂的作用域,则需要将它们添加到作用域列表中。为此,您需要按照以下步骤操作:

    i)转到Google控制台

    ii)选择您的项目

    iii)在左侧边栏中,您将获得“ Oauth同意屏幕”。点击该按钮

    iv)您将获得“添加范围”按钮。实际上,主要有3个成员报名:电子邮件,个人资料和openID

    v)您可以在此处添加期望的范围。

  2. 在代码级别,我们还可以添加SCOPES。在代码级别,我正在使用单例列表。这始终在使用单个作用域。因此,当我需要其他范围(如用户个人资料或用户电子邮件)时。我达不到这些。所以我更改了它,并得到了预期的结果。

上一个代码:

private static final List<String> SCOPES = Collections.singletonList(DriveScopes.DRIVE);

更改后:

private static final List<String> SCOPES = new ArrayList<>(
            Arrays.asList(DriveScopes.DRIVE,
                    Oauth2Scopes.USERINFO_EMAIL,
                    Oauth2Scopes.USERINFO_PROFILE,
                    Oauth2Scopes.PLUS_ME));