Момент вставки Google+ с клиентом nodejs
-
21-12-2019 - |
Вопрос
Кто-нибудь смог заставить google-api-nodejs-client успешно вставить момент?
Что бы я ни пытался, я получаю общую ошибку 400 «Недопустимое значение», но не могу сузить недопустимое значение, потому что API-проводник тоже не работает.
Может ли это быть из-за отсутствия параметра data-requestvisibleactions?Я использую паспорт.js require('passport-google-oauth').OAuth2Strategy
для обработки доступа oauth, и эта часть работает нормально, но я понятия не имею, как включить requestvisibleactions в поток запросов oauth, поскольку это определенно не исходит из клиентской формы.
Вот фрагмент того, что я пытаюсь сделать (используя последнюю версию googleapis
, v1.0.2):
var google = require('googleapis')
var auth = new google.auth.OAuth2()
auth.setCredentials({
'access_token': user.token
})
google.plus('v1').moments.insert({
collection: 'vault',
userId: 'me',
debug: true,
resource: {
type: "http://schemas.google.com/AddActivity",
target: {
type: "http://schema.org/CreativeWork",
url: "...omitted...",
image: "...omitted...",
description: "test",
name: "test"
}
},
auth: auth
}, function (err, response) {
if (err) {
console.error(err)
res.send(err.code, err)
} else {
console.log(response)
res.send(200)
}
})
ссылка 1 (устарело по отношению кболее старая версия googleapis
)
ссылка 2 (на стороне клиента, где использование data-requestvisibleactions более очевидно)
Решение
Как вы предположили, вам нужно request_visible_actions
параметр как часть URL-адреса, вызывающего конечную точку oauth.
Похоже, текущая версия pass-google-oauth не поддерживает этот параметр.Судя по нескольким открытым проблемам и запросам на включение, неясно, ответит ли автор и на запросы о его добавлении.У вас есть два возможных варианта:
Переключитесь на использование поддержки OAuth, включенной в google-api-nodejs-client.
Исправьте код паспорта-google-oauth.(И, возможно, отправьте запрос на включение в надежде, что он будет полезен кому-то еще.)
Я не использую паспорт.js или рассматриваемый модуль паспорта, поэтому я не могу это проверить, но, судя по репозиторию github, я думаю, вы можете вставить следующее: lib/passport-google-oauth/oauth2.js после строки 136 и перед оператором возврата:
if (options.requestVisibleActions) {
// Space separated list of allowed app actions
// as documented at:
// https://developers.google.com/+/web/app-activities/#writing_an_app_activity_using_the_google_apis_client_libraries
// https://developers.google.com/+/api/moment-types/
params['request_visible_actions'] = options.requestVisibleActions;
}