Как добавить приватных членов во внешний API

Всем доброго дня,

Я пытаюсь создать функцию, которая автоматически создаст членство через мою внешнюю программу лояльности (через Whisqr) для текущего пользователя на моем веб-сайте Wix.com. Я получаю сообщение об ошибке, в котором говорится, что открытый ключ не найден.

Вот мой внутренний код:

 import {fetch} from 'wix-fetch';  
import {wixData} from 'wix-data';


export function postLoyalty() {
 let options ={
 "headers": {        
 "X-Public": "pk_live_ba43e74df464cbf521dd07ee20443ff754c3afc11adc16df2594facb2147cd76"
        }
  }
 const url = 'https://whisqr.com/api/v1.2/user/customer/';
 const key = '<pk_live_ba43e74df464cbf521dd07ee20443ff754c3afc11adc16df2594facb2147cd76>';
     console.log("Url: ");

 return fetch(url, {method: 'post'})
    .then(response => {
 return response.json();
    })
    .then((data) => {
      console.log(data);
 return data;
    });
}

Вот код моей страницы:

import {postLoyalty} from 'backend/Loyalty.jsw';
import {wixData} from 'wix-data';
import wixLocation from "wix-location";
import {myFunction} from 'public/core.js';
import wixUsers from 'wix-users';


$w.onReady(function () {
 let publickey = 'pk_live_ba43e74df464cbf521dd07ee20443ff754c3afc11adc16df2594facb2147cd76';
    myFunction(publickey)
    .then( (response) => {
        console.log(response); //your base64 encoded string
    })});

export function page1_viewportEnter(event) {
 //Add your code for this event here: 
 let email = wixUsers.currentUser.getEmail();
postLoyalty(email)
        .then(LoyaltyInfo => {
            console.log(LoyaltyInfo)
            $w("#text1").text = LoyaltyInfo.Results.Value;
        })
}


Любая обратная связь очень ценится!


person Lightning Admin    schedule 15.10.2019    source источник


Ответы (1)


Вы делаете вызов URL-адреса, используя метод POST, но не используете ни один из ключей и заголовков, которые вы определили.

Правильный вызов POST, который использует заголовок и тело запроса, будет выглядеть следующим образом:

    export function myFunction(data) {

     const url = "https://whisqr.com/api/v1.2/user/customer/";

      const headers = {
          "Authorization": "Bearer " + key, //if api key is required like this
          "Content-Type": "application/json" //the content type
        };

      return fetch(url, {
            "method": "POST",
            "headers": headers,
            "body": JSON.stringify(data) //if there is a body
        });
    }

Вы сказали, что вам нужно создать участника на внешней платформе, поэтому вам, должно быть, нужно отправить тело с данными клиента. Прочтите документацию по API.

person Shan    schedule 16.10.2019
comment
Большое спасибо за этот Шан. Я все еще получаю сообщение об ошибке, что контент не найден. Я не уверен, как это закодировать, у меня сложилось впечатление, что хеш контента был сгенерирован для каждого пользователя. Вы можете объяснить это дальше? - person Lightning Admin; 19.10.2019
comment
Мой API требует хэш контента, сгенерированный с помощью HMAC SHA256, но я не уверен, как это сделать. Можете ли вы помочь или предложить какие-либо статьи/учебники для этого? - person Lightning Admin; 24.10.2019
comment
stackoverflow .com/questions/35228114/ - person Shan; 24.10.2019
comment
Я просмотрел статью и не могу понять, что такое секретный ключ и секретное сообщение. - person Lightning Admin; 24.10.2019