配置对 Google 我的公司 API 的请求以避免未经身份验证的错误
Configuring request to Google My Business API to avoid Unauthenticated error
在我的 Node.js 应用程序中向 Google 我的业务 API 提交请求时,我总是收到未经身份验证的错误。回复:
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
为了它的价值,我正在使用请求-承诺客户端来发出请求。我的功能如下。我刚收到访问令牌,所以我相当确定它是好的,而且我可以通过 err.options.Authorization 日志看到它。我知道位置 ID 尚不存在,但我不认为这是错误告诉我的内容。
const request = require('request-promise');
...
function checkLocation (loc) {
return request({
method: 'GET',
uri: `https://mybusiness.googleapis.com/v4/accounts/${ACCOUNT_ID}/locations/${loc._id}`,
Authorization: `OAuth ${ACCESS_TOKEN}`
})
.then(function (response) {
console.log(response);
})
.catch(function (err) {
console.error(err.error, err.options.Authorization);
});
}
我的请求格式不正确还是我没有发送我需要的所有信息?
更新: 我遗漏了可能重要的信息,即这是通过服务器端应用程序的一次性授权过程,如下所述:https://developers.google.com/identity/protocols/OAuth2。我的麻烦被包裹在那个页面上的句子中,"After an application obtains an access token, it sends the token to a Google API in an HTTP authorization header."
原来我的 header 格式不正确。授权密钥应该在 headers
object:
{
method: 'GET',
uri: `https://mybusiness.googleapis.com/v4/accounts/${ACCOUNT_ID}/locations/${loc._id}`,
headers: {
Authorization: `OAuth ${ACCESS_TOKEN}`
}
}
在我的 Node.js 应用程序中向 Google 我的业务 API 提交请求时,我总是收到未经身份验证的错误。回复:
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
为了它的价值,我正在使用请求-承诺客户端来发出请求。我的功能如下。我刚收到访问令牌,所以我相当确定它是好的,而且我可以通过 err.options.Authorization 日志看到它。我知道位置 ID 尚不存在,但我不认为这是错误告诉我的内容。
const request = require('request-promise');
...
function checkLocation (loc) {
return request({
method: 'GET',
uri: `https://mybusiness.googleapis.com/v4/accounts/${ACCOUNT_ID}/locations/${loc._id}`,
Authorization: `OAuth ${ACCESS_TOKEN}`
})
.then(function (response) {
console.log(response);
})
.catch(function (err) {
console.error(err.error, err.options.Authorization);
});
}
我的请求格式不正确还是我没有发送我需要的所有信息?
更新: 我遗漏了可能重要的信息,即这是通过服务器端应用程序的一次性授权过程,如下所述:https://developers.google.com/identity/protocols/OAuth2。我的麻烦被包裹在那个页面上的句子中,"After an application obtains an access token, it sends the token to a Google API in an HTTP authorization header."
原来我的 header 格式不正确。授权密钥应该在 headers
object:
{
method: 'GET',
uri: `https://mybusiness.googleapis.com/v4/accounts/${ACCOUNT_ID}/locations/${loc._id}`,
headers: {
Authorization: `OAuth ${ACCESS_TOKEN}`
}
}