Вопрос

Кто-нибудь смог заставить 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 не поддерживает этот параметр.Судя по нескольким открытым проблемам и запросам на включение, неясно, ответит ли автор и на запросы о его добавлении.У вас есть два возможных варианта:

  1. Переключитесь на использование поддержки OAuth, включенной в google-api-nodejs-client.

  2. Исправьте код паспорта-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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top