سؤال

هل تمكن أي شخص من إقناع عميل google-api-nodejs بإدراج لحظة بنجاح؟

مهما حاولت، أحصل على خطأ عام 400 "قيمة غير صالحة" ولكن لا أستطيع تضييق نطاق القيمة غير الصالحة لأن مستكشف واجهة برمجة التطبيقات لا يعمل أيضا.

هل سيكون ذلك بسبب معلمة data-requestvisibleactions المفقودة؟أنا أستخدم جواز السفر.js require('passport-google-oauth').OAuth2Strategy للتعامل مع الوصول إلى oauth، وهذا الجزء يعمل بشكل جيد، ولكن ليس لدي أي فكرة عن كيفية دمج requestvisibleactions في تدفق طلب oauth لأن هذا بالتأكيد لا ينشأ من نموذج من جانب العميل.

فيما يلي مقتطف مما أحاول القيام به (باستخدام أحدث إصدار من googleapis, ، الإصدار 1.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 (عفا عليها الزمن w.r.t.نسخة قديمة من googleapis)

المرجع 2 (من جانب العميل، حيث يكون استخدام إجراءات طلب البيانات المرئية أكثر وضوحًا)

هل كانت مفيدة؟

المحلول

كما توقعت، أنت بحاجة إلى request_visible_actions المعلمة كجزء من عنوان URL الذي يستدعي نقطة نهاية oauth.

يبدو أن الإصدار الحالي من جواز السفر-google-oauth لا يدعم هذه المعلمة.إذا حكمنا من خلال العديد من المشكلات المفتوحة وطلبات السحب، فليس من الواضح أن المؤلف سوف يستجيب لطلبات إضافتها أيضًا.لديك خياران محتملان:

  1. قم بالتبديل إلى استخدام دعم OAuth المضمن في google-api-nodejs-client

  2. تصحيح رمز Passport-google-oauth.(وربما أرسل طلب سحب على أمل أن يكون مفيدًا لشخص آخر.)

لا أستخدم جواز السفر.js أو وحدة جواز السفر المعنية، لذلك لا يمكنني اختبار ذلك، ولكن استنادًا إلى مستودع جيثب، أعتقد أنه يمكنك إدراج ما يلي في 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