Получение исключения при попытке интеграции API с использованием PHP - PullRequest
0 голосов
/ 05 февраля 2019

В настоящее время я работаю над интеграцией API чата (он называется pusher Chatkit) в приложение, над которым я работаю.Для бэкэнда используются PHP и laravel, а для проверки сервера используется почтальон.При тестировании на Почтальоне я получаю 500 внутреннюю ошибку сервера с этим исключением:

{
    "message": "You must provide an instance_locator",
    "exception": "Chatkit\\Exceptions\\MissingArgumentException",
    "file": "/Users/shaquilenoor/Desktop/chatapi/vendor/pusher/pusher-chatkit-server/src/Chatkit.php",
    "line": 49,
    "trace": [

в трассировке, многие файлы / строки упоминаются, поэтому я пропустил, так как это слишком много, чтобы уместиться в этом посте (хотя вы можете спросить, если нужно, и я могусоздайте с ним ссылку Gdrive)

Код, ведущий к строке + функции, на которую вы ссылаетесь, таков:

<?php

namespace Chatkit;

use Chatkit\Exceptions\ChatkitException;
use Chatkit\Exceptions\ConfigurationException;
use Chatkit\Exceptions\ConnectionException;
use Chatkit\Exceptions\MissingArgumentException;
use Chatkit\Exceptions\TypeMismatchException;
use Firebase\JWT\JWT;

class Chatkit
{
    protected $settings = array(
        'scheme'       => 'https',
        'port'         => 80,
        'timeout'      => 30,
        'debug'        => false,
        'curl_options' => array(),
    );
    protected $logger = null;
    protected $ch = null; // Curl handler

    protected $api_settings = array();
    protected $authorizer_settings = array();
    protected $cursor_settings = array();

    const GLOBAL_SCOPE = 'global';
    const ROOM_SCOPE = 'room';

    /**
     *
     * Initializes a new Chatkit instance.
     *
     *
     * @param array $options   Options to configure the Chatkit instance.
     *                         instance_locator - your Chatkit instance locator
     *                         key - your Chatkit instance's key
     *                         scheme - e.g. http or https
     *                         host - the host; no trailing forward slash.
     *                         port - the http port
     *                         timeout - the http timeout
     */
    public function __construct($options)
    {
        $this->checkCompatibility();

        if (!isset($options['instance_locator'])) {
            throw new MissingArgumentException('You must provide an instance_locator');
        }
        if (!isset($options['key'])) {
            throw new MissingArgumentException('You must provide a key');
        }

        $this->settings['instance_locator'] = $options['instance_locator'];
        $this->settings['key'] = $options['key'];
        $this->api_settings['service_name'] = 'chatkit';
        $this->api_settings['service_version'] = 'v2';
        $this->authorizer_settings['service_name'] = 'chatkit_authorizer';
        $this->authorizer_settings['service_version'] = 'v2';
        $this->cursor_settings['service_name'] = 'chatkit_cursors';
        $this->cursor_settings['service_version'] = 'v2';

        foreach ($options as $key => $value) {
            // only set if valid setting/option
            if (isset($this->settings[$key])) {
                $this->settings[$key] = $value;
            }
        }
    }

instance_locator ссылается на код, сгенерированный в Pusher Chatkit, который я связываю в своих файлах для интеграции этого API.Это мой первый раз, когда я интегрировал бэкэнд-сервер с использованием PHP, поэтому немного потерян!Буду признателен за некоторые советы о том, где я должен искать решение проблемы, а также более чем рад предоставить дополнительную информацию.Приветствия

1 Ответ

0 голосов
/ 06 февраля 2019

В зависимости от того, как вы создаете запрос API, вы должны сделать что-то вроде этого:

$chatkit = new Chatkit(['instance_locator' => *locator*, 'key' => *actualKey*]);

Полученная ошибка означает, что вы не передали переменные в массив.

...