Squeak.ru - шаблоны программирования

Yelp API, OAuth; Неверная подпись. Ожидаемая базовая строка подписи

ПРИМЕЧАНИЕ. Я просмотрел все сообщения на первых двух страницах результатов поиска Google, которые возвращаются, когда я ввожу свою ошибку в Google, и у меня все еще есть эта проблема. Кажется, что JavaScript OAuth мало освещается, потому что большая часть бизнеса OAuth происходит на серверной части.

Я пытаюсь сделать запрос AJAX к API Yelp Phone Search. Я использую библиотеку JavaScript OAuth Марко Беттиоло. Я считаю, что у меня работает библиотека OAuth, но по какой-то причине, когда я пытаюсь сделать вызов, возвращаемый JSON говорит об ошибке «Неверная подпись». Ознакомьтесь с моим действующим проектом и убедитесь в этом сами. Вот мой проект на GitHub. Если вы хотите воспроизвести ошибку самостоятельно, перейдите в мой живой проект, откройте откройте консоль devtools, нажмите на тренажерный зал, чтобы появилось информационное окно, а затем нажмите там, где написано «Нажмите здесь, чтобы посмотреть фотографии». Как только вы нажмете на нее, приложение выполнит запрос AJAX и будет следить за консолью, потому что вы увидите сообщение об ошибке.

Любая помощь высоко ценится!

Вот соответствующий код. Я поместил соответствующий AJAX-код внутри обработчика onclick для ссылки на фотографии, которая находится в каждом информационном окне.

photoLink.onclick = function() {
    // Modify phone number string so it's ready to be 
    // put into url for AJAX call to Yelp API
    var phoneNumber = place.formatted_phone_number;
    var re = /\D/gi; 
    phoneNumber = phoneNumber.replace(re, '');

    var yelpURL = YELP_BASE_URL + phoneNumber;

    var parameters = {
      oauth_consumer_key: YELP_CONSUMER_KEY,
      oauth_token: YELP_TOKEN,
      oauth_nonce: generateNonce(),
      oauth_timestamp: Math.floor(Date.now()/1000),
      oauth_signature_method: 'HMAC-SHA1',
      oauth_version : '1.0',
      callback: 'cb'              // This is crucial to include for jsonp implementation in 
                                  // AJAX or else the oauth-signature will be wrong.
    };

    var encodedSignature = oauthSignature.generate('GET',yelpURL, parameters, YELP_CONSUMER_SECRET, YELP_TOKEN_SECRET);
    parameters.oauth_signature = encodedSignature;

    var settings = {
      url: yelpURL,
      data: parameters,
      cache: true,  //        <----  This is crucial to include as well to prevent jQuery from 
                                  // adding on a cache-buster parameter "_=23489489749837", 
                                  // invalidating our oauth-signature
      dataType: 'jsonp',
      success: function(results) {
        // Do stuff with results
        console.log(results);
      },
      fail: function() {
        // Do stuff on fail
        console.log('AJAX request has failed :(');
      }
    };

    // Send AJAX request via jQuery library
    $.ajax(settings);
  };

  • Как ты это починил? 09.06.2016

Ответы:


1

В настройках jQuery ajax вам также нужно будет указать имя обратного вызова, чтобы оно соответствовало вашему параметру обратного вызова при создании подписи. В противном случае jQuery просто выберет случайное имя, которое приведет к недопустимой подписи.

Попробуйте добавить это в настройки:

jsonpCallback: 'cb'

Надеюсь это поможет.

29.05.2015
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...