我正在尝试更新Google表格值。
"请求具有无效的身份验证凭据。预期的OAuth 2访问令牌,登录cookie或其他有效的身份验证凭据。"
我想使用API密钥而不是outh 2.0
任何人都可以有任何建议。
答案 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)
我正面临类似的问题。
问题分析: 实际问题缺少范围。
解决方案: 可以通过以下方式添加范围:
详细信息在这里:
此处提供了过程:https://support.google.com/googleapi/answer/6158841?hl=en
启用api后,有时您将无法获得预期的作用域。如果需要任何复杂的作用域,则需要将它们添加到作用域列表中。为此,您需要按照以下步骤操作:
i)转到Google控制台
ii)选择您的项目
iii)在左侧边栏中,您将获得“ Oauth同意屏幕”。点击该按钮
iv)您将获得“添加范围”按钮。实际上,主要有3个成员报名:电子邮件,个人资料和openID
v)您可以在此处添加期望的范围。
在代码级别,我们还可以添加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));